内部类
介绍:
一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。在 Java 中,/*个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。*/类也是封装的一种体现。
内部类分类:
1.实例内部类
2.静态内部类
3.本地内部类//了解
4.匿名内部类
====================
1.实例内部类
class Demo1{
public int date1=1;
private int date2=2;
public static int date3=3;
/**
* 实例内部类
* 1。如何实例化实例内部类??
* 外部类类名.内部类 变量=外部类引用.new 内部类()
* Demo1.Demo2 demo2=demo1.new Demo2();
*2.实例内部类不能定义静态成员变量,如果定义要加final修饰,没有为什么这是语法规定
* 3.实例内部类不能构造静态的成员方法
* 4.实例内部类怎么访问外部类成员变量??
*通过外部类类名.this会访问外部类成员变量
*
*
*/
class Demo2{
public int date1=111;//内部类变量与外部类变量相同
public int date4=4;
private int date5=5;
//public static int date6=6;//内部类里面不能直接定义静态的成员变量,要加final
public Demo2(){
System.out.println("实例内部类的构造方法");
}
public void num1(){
System.out.println("实例内部类的普通方法");
System.out.println(this.date1);//不加this会优先访问局部变量没有时才会访问全局变量,加this时会访问内部类变量
System.out.println("外部类成员访问"+Demo1.this.date1);//通过外部类.this会访问外部类成员变量
System.out.println(date2);
System.out.println(date3);
System.out.println(date4);
System.out.println(date5);
}
}
}
public class Test1 {
public static void main(String[] args) {
Demo1 demo1=new Demo1();//先创造外部类对象
Demo1.Demo2 demo2=demo1.new Demo2();//用外部类对象引用内部类,在用外部类对象引用创造内部类对象
demo2.num1();
}
}