JAVA学习:内部类


静态成员不能访问非静态成员。

内部类可以访问外部类private成员,反之不成立。

非静态内部类不能拥有静态成员。

接口内部类默认为public static。

子类继承内部类父类,会自动调用非静态内部类构造器,此时子类构造器必须存在一个外部类对象。

interface jiekou{
    void shixian1(); 
}

abstract class chouxiang{
	abstract void shixian2();
}

class A{
	class B{//非静态内部类
		void toPrint1(){
		System.out.println("I'm Inner Class B");
		}
	}
	static class C{//静态内部类
		void toPrint2(){//非静态成员
		System.out.println("I'm Inner Class C");
		}
		static void toPrint3(){//静态成员
			System.out.println("I'm Inner Class C");
		}
		}
	void toPrint0(){
		new C().toPrint2();//在外部类中,调用静态内部类非静态成员,需创建内部类实例来调用
		C.toPrint3();//在外部类中,调用静态内部类静态成员,可直接通过静态内部类类名直接调用
	}
	void jbIC(){
		class jubuInnerClass{//局部内部类,即存在于方法体内的内部类
		}
	}
	void niminglei1(jiekou J){//实现接口类型的匿名类的方法
		J.shixian1();
	}
	void niminglei2(chouxiang X){//实现抽象类类型的匿名类的方法
		X.shixian2();
	}
}

class D1 extends A.B{//外部类继承非静态内部类
	D1(A a){
	a.super();
	}
}

class D2 extends A.C{//外部类继承静态内部类

}

public class OutIn{
	public static void main(String args[]){
		A a=new A();
		A.B b1=new A().new B();//在外部类以外的地方,创建非静态内部类对象,方式一
		A.B b2=a.new B();//在外部类以外的地方,创建非静态内部类对象,方式二
		A.C c=new A.C();//在外部类以外的地方,创建静态内部类对象
		b1.toPrint1();//调用非静态内部类方法
		b2.toPrint1();//调用非静态内部类方法
		a.toPrint0();//调用外部类方法
		c.toPrint2();//在外部类以外的地方,使用创建的静态内部类对象调用非静态方法
		c.toPrint3();//在外部类以外的地方,使用创建的静态内部类对象调用静态方法
		A.C.toPrint3();//在外部类以外的地方,通过 外部类类名.内部类类名 的方式调用静态内部类的静态方法
		a.niminglei1(new jiekou(){//接口类型的匿名类
		public void shixian1(){
			System.out.println("I'm interface");
		}
	    }
		);
	
	    a.niminglei2(new chouxiang(){//抽象方法类型的匿名类
		void shixian2(){
		    System.out.println("I'm abstract class");	
		}
	    }
	    );
	}
}

输出结果:

I'm Inner Class B
I'm Inner Class B
I'm Inner Class C
I'm Inner Class C
I'm Inner Class C
I'm Inner Class C
I'm Inner Class C
I'm interface
I'm abstract class


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值