0
点赞
收藏
分享

微信扫一扫

Java面向对象_内部类_成员内部类

是波波呀 2022-03-12 阅读 66
package com.pyk.d;
/*1、类的组成:属性,方法,构造器,代码块(普通块,静态块,构造块,同步块),内部类
 *2、一个类TestOuter的内部的类SubTest叫内部类,内部类:SubTest 外部类:TestOuter
 *3、内部类:成员内部类(静态的、非静态的)和局部内部类(位置:可以在方法内,块内,构造器内)
 *4、成员内部类:里面包括属性,方法,构造器等,修饰符可以为:private,default,protect,public final,abstract*/
public class TestOuter {
	//非静态的成员内部类
	public class D{
		int age=20;
		String name;
		public void method() {
			/*5、内部类可以访问外部类的内容
			System.out.println(age);
			a();*/
			int age=30;
			//8、内部类和外部类属性重名时如何调用
			System.out.println(age);//出现就近原则,访问到30
			System.out.println(this.age);//访问到20
			System.out.println(TestOuter.this.age);//访问到10
		}
	}
	//静态成员内部类
	static class E{
		public void method() {
			//static修饰的静态内部类只能访问static修饰的内容
			/*错误:
			 System.out.println(age);
			 a();*/
		}
	}
	//属性
	int age=10;
	//方法
	public void a() {
		System.out.println("这是a方法");
		//普通块(方法内)
		{
			System.out.println("这是普通块");
			class B{
				//内部类(位于块内)
			}
		}
		class A{
			//内部类(位于方法内)
		}
		//7、外部类访问内部类的属性和方法,需要创建内部类的对象,然后进行调用
		D d=new D();
		System.out.println(d.name);
		d.method();
	}
	//静态块
	static{
		System.out.println("这是静态块");
	}
	//构造块(方法外)
	{
		System.out.println("这是构造块");
	}
	//构造器
	public TestOuter() {
		class c {
			//内部类(构造器内)
		}
	}
	public TestOuter(int age) {
		this.age=age;
	}
}
class Demo{
	public static void main(String[] args) {
		TestOuter to=new TestOuter();
		to.a();
		//创建内部类的对象
		//静态的成员内部类创建E对象
		TestOuter.E e=new TestOuter.E();
		//非静态的成员内部类D创建对象
		//错误:TestOuter.D d=new TestOuter.D();
		TestOuter t=new TestOuter();
		TestOuter.D d=t.new D();
	}
}
举报

相关推荐

面向对象 成员内部类

java面向对象——内部类

0 条评论