抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

这里是对Java基础一些遗漏或者不太熟悉的知识点回顾

1.内部类

内部类:写在一个类里面的类就叫做内部类

什么时候用到内部类?

B类表示的事物是A类的一部分,且B单独存在没有意义,比如:汽车的发动,ArrayList的迭代器,人的心脏等等

前三种内部类了解即可,匿名内部类重点掌握

1.成员内部类

写在成员位置的(即类中,方法外),属于外部类的成员。

1
2
3
4
5
6
7
8
public class Car{	//外部类
String carName;
int carAge;
class Engine{ //内部类
String engineName;
int engineAge;
}
}

成员内部类要关注:

  1. 成员内部类的代码如何写?
  2. 如何创建成员内部类的对象?
  3. 成员内部类如何获取外部类的成员变量(重名的)?

创建内部类的对象:

  1. 在外部类编写方法,对外提供内部类的对象
  2. 直接创建:格式——>外部类名.内部类名 对象名 = 外部类对象.内部类对象;

成员内部类获取外部类的成员变量:

外部类.this.变量名

一个题目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Outer {
private int a = 10;

class Inner{
private int a = 20;

public void show(){
int a = 30;
System.out.println(Outer.this.a); //想输出10
System.out.println(this.a); //想输出20
System.out.println(a); //想输出30
}
}


public static void main(String[] args) {
Outer.Inner inner = new Outer().new Inner();
inner.show();
}
}

2.静态内部类

是成员内部类的一种特殊情况,当成员内部类用static修饰时,就是静态内部类

静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象

创建内部类对象的格式:

外部类名.内部类名 对象名 = new 外部类名.内部类名()

调用非静态方法的格式:

先创建对象,再对象调用

调用静态方法:

外部类名.内部类名.方法名()

3.局部内部类

没啥用,了解一下即可

将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。

外界是无法直接使用,需要在方法内部创建对象并使用。

该类可以直接访问外部类的成员,也可以访问方法内的局部变量,

4.匿名内部类

本质就是隐藏了名字的内部类

格式:

1
2
3
new 类名或接口名(){	//1.继承/实现.这里是指{}是一个没有名字的类,它继承'类名' 或实现'接口名'	2.方法重写;	3.创建对象
重写方法;
};

使用场景,如果实现类只要使用一次,就可以用匿名内部类简化代码。

评论