java內部類之成員內部類,通過內部類實現多繼承
阿新 • • 發佈:2018-12-26
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(); } }