1、类的组成:属性,方法,构造器,代码块(普通块,静态块,构造块,同步块),内部类 2、一个类TestOuter的内部的类SubTest叫内部类,内部类:SubTest 外部类:TestOuter 3、内部类:成员内部类(静态的、非静态的)和局部内部类(位置:可以在方法内,块内,构造器内) 成员内部类:里面包括属性,方法,构造器等,修饰符可以为:private,default,protect,public,final,abstract?
package com.pyk.a;
//内部类-成员内部类:1、非静态成员内部类2、静态成员内部类
public class TestOuter {
//非静态成员内部类
class A{
int age=21;
String name;
public void AAAA() {
int age=22;
a();//内部类可以访问外部类的属性和方法
//内部类和外部类属性重名时如何调用
System.out.println(age);//就近原则,访问本方法里面的属性age
System.out.println(this.age);//访问内部类的属性age
System.out.println(TestOuter.this.age);//访问外部类的非静态属性age
System.out.println("AAAA");
}
}
//静态成员内部类
static class B{
int age=22;
public void BBBB() {
//静态内部类中只能访问外部静态属性和静态方法
System.out.println(TestOuter.name);//访问外部类的静态属性name
System.out.println("BBBB");
}
}
//属性
int age=20;
static String name="pyk";
//方法
public void a() {
System.out.println("aaaa");
//外部类访问内部类的东西,需要创建内部类对象再进行调用
A s=new A();
System.out.println(s.name);
s.AAAA();
}
//构造器
public TestOuter(){
}
public TestOuter(int age){
this.age=age;
}
//main方法
public static void main(String[] args) {
//创建非静态内部类对象outer
TestOuter t=new TestOuter();
TestOuter.A outer=t.new A();
outer.AAAA();
//创建静态内部类对象outer2
TestOuter.B outer2=new TestOuter.B();
System.out.println(outer2.age);
outer2.BBBB();
}
}
|