一、内部类的好处:
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
即内部类拥有外部类private等其他类不具有的访问权限
3.可是实现多重继承,接口必须实现里面的所有方法,多有不便,当我们需要实现的方法位于不同的类中时候
就想到了C++中的多继承,但是java中并未提供多继承机制,那么这样以来就可以从内部类的角度实现多继承:
public class A
{
String name="test";
public String name(){
return name;
}
}
public class B
{
int age=20;
public int age(){
return age;
}
}
//通过内部类继承AB类方法
public class C
{
private class A1 extends A{
public String name(){
return super.name();
}
}
private class B1 extends B{
public int age(){
return super.age();
}
}
//C具备了name属性方法
public String name(){
return new A1().name();
}
//C具备了age属性方法
public int age(){
return new B1().age();
}
}
4.可以避免修改接口而实现同一个类中两种同名方法的调用。即当你继承一个类实现一个或几个接口.
类和接口含有同名的方法时就会出现使用混乱的情况,这个时候内部类就可以在不改接口的情况解决此类问题:
//类A 和接口B 拥有同样的方法 incre()
public class C extends A implements B{
public void incre()//这个方法到底是接口的还是继承的?容易混乱
{
System.out.println("~~~~~~~");
}
}
//内部类方式
public class C extends A{
public void incre(){
System.out.println("extends func");
}
private class D implements B{
public void incre(){
System.out.println("inner class incre func");
}
}
}