合肥专业做网站的公司,东莞阳光网投诉电话,骨干校建设专题网站,wordpress foote在哪里目录
概述
类的五大成员
定义
使用场景
访问特点
分类
成员内部类
如何书写
如何创建对象
变量重名时#xff0c;内部类访问变量的内存图
静态内部类
局部内部类
匿名内部类 概述
类的五大成员
属性、方法、构造方法、代码块、内部类
定义
在一个类里面再定义…目录
概述
类的五大成员
定义
使用场景
访问特点
分类
成员内部类
如何书写
如何创建对象
变量重名时内部类访问变量的内存图
静态内部类
局部内部类
匿名内部类 概述
类的五大成员
属性、方法、构造方法、代码块、内部类
定义
在一个类里面再定义一个类这个类就被称为内部类。
使用场景
内部类表示的事物是外部类的一部分且内部类单独存在没有意义。
访问特点
内部类可以直接访问外部类的成员包括私有成员。
外部类要访问内部类的成员则必须创建对象。
分类
成员内部类
如何书写
写在成员位置的属于外部类的成员成员内部类可以被修饰符所修饰在成员内部类里面JDK16之前不能定义静态变量JDK16开始才可以定义静态变量
如何创建对象
在外部类中编写方法对外提供内部类的对象(在成员内部类被private修饰的情况下)直接创建格式外部类名.内部类名 对象名 外部类对象.内部类对象
Outer.Inner oi new Outer().new Inner();
变量重名时内部类访问变量的内存图
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);System.out.println(this.a);System.out.println(a);}}
}public class Test {public static void main(String[] args) {Outer.Inner oi new Outer().new Inner();oi.show();}
}
输出a就近原则所以输出值为30
输出this.a this指代方法的调用者即内部类对象002地址中的值20
输出Outer.this.a在创建内部类对象的时候除了有成员变量外还会有一个隐含的外部类对象的地址这个时候会首先找到002地址再找到它的外部类对象001地址中的a值10。 静态内部类 实际上静态内部类就是成员内部类用static修饰符来修饰是一种特殊的成员内部类 静态内部类只能访问外部类中的静态变量和静态方法如果想要访问非静态的则需要创建外部类的对象 即 Outer o new Outer(); 创建静态内部类对象的格式外部类名.内部类名 对象名 new 外部类名.内部类名()
Outer.Inner oi Outer.Inner();
调用静态方法的格式外部类名.内部类名.方法名();
局部内部类
将内部类定义在方法里面就叫做局部内部类类似于方法里面的局部变量外界无法直接使用需要在方法内部创建对象并使用该类可以直接访问外部类中的成员也可以访问方法内的局部变量
匿名内部类
匿名内部类本质上就是隐藏了名字的内部类。格式如下
new 类名或者接口名() {重写方法
};
实质上大括号包含的部分就是一个类这个类继承了前面的类或者实现了前面的接口加上new之后整体就是一个类的子类对象或者接口的实现类对象。匿名内部类实际上包含了继承或实现、方法重写以及创建对象这几个过程如果实现类只要使用一次就可以使用匿名内部类简化代码