1. 程式人生 > >java內部類之成員內部類,通過內部類實現多繼承

java內部類之成員內部類,通過內部類實現多繼承

public class MemberInnerClass {
	public static void main(String[] args){
		//建立外部類物件
		Outer1 outer=new Outer1();
		Outer1.Inner1 inner=outer.new Inner1();
		inner.innerShow();
		//outer.outerShow();
	}
}
class Outer1{
	private String name="張三";
	private int num1=10;
	public void outerShow(){
		System.out.println(name);
		System.out.println(num1);
		//Inner1 inner1=new Inner1();
		//inner1.innerShow();
		//System.out.println(num2);//外部類不能直接訪問內部類的成員。
	}
	public class Inner1{//內部類可以是私有的,但是不可以通過外部類的物件來獲得內部類的物件
		private String name="李四";
		private int num2=20;
		//private static int num3=30;//在成員內部類中不能宣告靜態成員,屬性和方法。
		private static final int num3=30;//靜態常量在內部類中是可以的
		public void innerShow(){
			System.out.println(name);
			System.out.println(Outer1.this.name);//內部類可以直接訪問外部類的成員和方法,包括私有
			System.out.println(num2);
			//outerShow();//等於Outer1.this.outerShow();只是因為他們沒有同名的方法,所有可以省略。
			//Outer1.this.outerShow();
		}
	}
}
	
	

通過成員內部類實現多繼承

public class MultiExtendsDemo{
	public static void main(String[] args){
		C c=new C();
		c.showA();
		c.showB();
	}
}
class A{
	public void showA(){
		System.out.println("A");
	}
}
class B{
	public void showB(){
		System.out.println("B");
	}
}
class C {
	private class A1 extends A{
		public void showA(){
			super.showA();
		}
	}
	private class B1 extends B{
		public void showB(){
			super.showB();
		}
	}
	public void showA(){
		new A1().showA();
	}
	public void showB(){
		new B1().showB();
	}
}

實現抽象類和介面中的相同方法
public class Demo2{
	public static void main(String[] args){
		Son son=new Son();
		son.show();
		son.show2();
	}
}
abstract class Parent{
	public abstract void show();
}
interface IShow{
	public abstract void show();
}
/*class Son extends Parent implements IShow{
	public 
}*/
class Son extends Parent{
	public void show(){
		System.out.println("抽象類中的show方法");
	}
	private class Inner2 implements IShow{
		public void show(){
			System.out.println("介面中的show方法");
		}
	}
	public void show2(){
		new Inner2().show();
	}
}