package Interface;
/**
* 内部类:把一个类定义在另一个类的内部称为内部类
* 使用:创建内部类的对象的时候,需要在内部类的前面加外部类来进行修饰
* 1.内部类可以直接访问外部类的属性和方法
* 2.外部类要想访问内部类,则需创建内部类的对象才可访问
* 3.内部类中不能定义静态属性(静态当然可以)
* 4.当内部类和外部类有相同的(属性或者方法)的时候,在内部类中可以直接访问内部类的(属性或方法)
* 如果想访问外部类的(属性或者方法)就得用 外部类类名.this.(属性或者方法)
*
* 分类:
* 1.成员内部类
* 实例化格式:
* 外部类.内部类 对象 = new 外部类().new 内部类();
* 2.静态内部类:
* 实例化格式:
* 外部类.内部类 对象 = new 外部类.内部类();
* 3.匿名内部类:适合一个类在使用过程中只是用一次的时候
* 格式:new 对象(){添加未实现的方法}
* 4.方法内部类:定义在外部类中方法里的类就称为方法内部类
* 注意:
* 1.方法内部类中的属性是被final修饰的(只是现在JDK版本高了,不需要显示声明)
*/
public class NeibuTest {
private int age = 200;
//成员内部类
public class DE {
//属性
private String name;
private int age = 10;
public void a() {
System.out.println(age);
System.out.println(NeibuTest.this.age);
b();
}
}
public void b(){
DE de =new DE();
System.out.println(de.name);
de.a();
}
//静态内部类
static class J {
private static String info = "HelloWorld!";
public void shuchu(){
System.out.println(info);
}
}
public Comparable mother() {
//匿名内部类
return new Comparable() {
@Override
public int compareTo(Object o) {
return 100;
}
};
}
//方法内部类
public void head(){
/*final*/ int num = 10;
class You{
public void print(){
//num = 20;无法改变
System.out.println(num);
}
}
}
}
class Demo{
public static void main(String[] args) {
//静态内部类实例化
NeibuTest.J j = new NeibuTest.J();
j.shuchu();
//成员内部类实例化
NeibuTest.DE de =new NeibuTest().new DE();
}
}
面向对象------内部内
最新推荐文章于 2023-05-06 15:05:06 发布
本文详细介绍了Java中的内部类,包括成员内部类、静态内部类、匿名内部类和方法内部类的定义、实例化及使用规则。内容涵盖内部类访问外部类成员的方式,以及如何通过外部类访问内部类成员。同时,文章强调了内部类中静态属性的限制,并提供了代码示例进行说明。
摘要由CSDN通过智能技术生成