基类
package sky.java.innerclass1.nimingneibulei;
public class Parent {
private int age;
public Parent(int age) {
this.age = age;
}
public int value() {
return age;
}
}
业务调用类
package sky.java.innerclass1.nimingneibulei;
public class Other {
public Parent parent(int x) {
/**
* 此为匿名内部类 , 对其基类进行了扩展 , 并返回
*/
return new Parent(x) {
@Override
public int value() {
return super.value()*40;
}
};
}
public static void main(String[] args) {
Other other = new Other();
Parent parent = other.parent(4);
System.out.println(parent.value());
}
}
总结 :
1. 内部类的作用 : 简单的一次性的扩展某类或接口 , 多用于一次性无关联性的场景
2. 内部类可以解决类只能单继承的问题 , 如下
基类
package sky.java.innerclass1.nimingneibulei2;
public class ParentA {
}
package sky.java.innerclass1.nimingneibulei2;
public class ParentB {
}
子类
package sky.java.innerclass1.nimingneibulei2;
public class Child extends ParentA {
/**
* 通过内部类 , 实现可以获取与使用ParentB类功能的功能
*/
ParentB b() {
return new ParentB(){
};
}
}
调用类
package sky.java.innerclass1.nimingneibulei2;
public class Other {
void a(ParentA parentA) {
}
void b(ParentB parentB) {
}
public static void main(String[] args) {
Other other = new Other();
Child child = new Child();
other.a(child);
// 以此方式 , 来解决类只能单继承的问题
other.b(child.b());
}
}