day97_内部类

day97_内部类

  • 在Java中,允许在一个类定义在另一个类的里面,前者被称为内部类,后者为外部类;

  • 内部类可以使用外部类的成员变量和方法,使用语法:
    外部类名.this.成员变量名/方法名();

  • 外部类使用内部类的变量和方法:
    实例化内部类对象名.内部类的方法/变量名

  • 内部类可以继承内部类/同一包下的类
    -可以使用static修饰内部类,但是内部类就无法使用外部类中的非static成员变量和方法


package day08;

/**
 * 2021年2月27日
 * day97 内部类 
 */
public class Test3 {
	int i;
	public int k;
	private int l;
	
	class A{
		int i;
		public void setTest3Filed() {
			Test3.this.i = 0;
			Test3.this.k = 15;
			Test3.this.l = 45;
		}
		
		public void setA() {
			this.i = 10;
		}
	}
	
	public void setTest3Ifo() {
		new A().setTest3Filed();//外部类要使用内部类的方法和变量则要new一个内部类的对象
	}
	
	public void showInfo() {
		System.out.println(i);
		System.out.println(l);
		System.out.println(k);
	}
	
	//内部类可以继承另一个内部类
	public  class C{
		
	}
	
	class D extends C{
		
	}
	
	//可以用关键词static修饰内部类,但是就不可以用外部类的非static成员变量和方法了
	static class B{
		
	}
	public static void main(String[] args) {
		Test3 t = new Test3();
		t.setTest3Ifo();
		t.showInfo();
	}
	
}

内部类的存在意义:主要是解决Java不能多重继承的问题

/**
 * 
 */
package day08;

/**
 * @author Abu
 * 2021年2月27日
 * day97_内部类存在的理由
 */
public class Test4 {
	public static void main(String[] args) {
		A a = new A();
		a.getB1();
		a.getC();
	}
	
}
//让A获取到B和C的方法并重写,因为不能实现多重继承,所以可以使用多个内部类来实现多个继承
class A{
	private class InnerB1 extends B1{
		
		@Override
		public void testB1() {
			System.out.println("这是内部类InnerB1的testB1方法");
		}
	}
	
	private class InnerC extends C{
		
		@Override
		public void testC() {
			System.out.println("这是内部类InnerC的testC方法");
		}
	}
	
	public void getB1(){
		new InnerB1().testB1();
	}
	
	public void getC(){
		new InnerC().testC();
	}
}
class B1{
	public void testB1() {
		
	}
}
class C{
public void testC() {
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值