(一)成员内部类
package InnerClass;
import javax.print.attribute.standard.MediaSize;
public class Outer {
//2外部类中的成员
private int age=99;
public static String a;
public class Inner{//普通的成员内部类
//1.1成员变量
public String name;
private int age=88;
public static String Schoolname;//JDK16开始才支持定义静态成员
//1.2成员方法
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
public void test(){
//2.1内部类 可以像普通方法一样访问外部类的成员
a="njax";
System.out.println(age);
System.out.println(a);
}
public void printage(){
int age=66;
//就近原则,当直接打印时选择最近值:66
System.out.println(age);//66
//this 代表的是当前内部类的对象
System.out.println(this.age);//88
//要访问外部类对象,加上一个外部类
System.out.println(Outer.this.age);//99
}
}
public void tset2(){
/* 3外部类中的方法不可以访问内部类中的成员
name="adhaj";
System.out.println(name);*/
}
}
Test方法创建对象及其访问
package InnerClass;
public class Test
{
public static void main(String[] args) {
//目标:了解 成员内部类 及其特点
//访问成员内部类,要先创建外部类的对象才能创建内部类的对象
Outer.Inner in=new Outer().new Inner();
in.test();
in.printage();
}
}
(二)静态内部类
package InnerClass.staticInner;
public class Outer {
//
private int age;
public static String schoolName;
public static class Inner{//静态内部类,与普通类所包含的东西没有区别,
private String name;
public static int a;
public void test(){
//2.静态类中可以直接访问外部类的static变量,
// 但是不可以直接访问外部类的实例成员变量age
//因为age是对象的成员变量,而静态类和静态成员变量一样属于类,不用创建对象
System.out.println(schoolName);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
}
test:
package InnerClass.staticInner;
public class Test {
public static void main(String[] args) {
//目标:了解静态内部类
//1.静态内部类与静态成员变量类似,可以直接使用外部类访问,不用创建外部类对象
Outer.Inner in=new Outer.Inner();
in.setName("anjxb");
}
}