1,为什么要设计内部类,它解决了什么问题?设计的目的是什么?
如果想让一个类继承多个接口(可以多继承接口)继承多个抽象类是做不到。但是在设计比较复杂的时候需要继承多个接口或者抽象类,总不能全部功能写在一个类当中,所以为了实现继承多个接口或者抽象类,就设计了内部类。
问题:实现多继承又有什么用呢?有什么样的问题,必须是要求多继承的吗?
如果是单继承,一个复杂的功能,只能引进来一个类来帮助,这个类会写的很长。如果实现多继承,会使每个类的代码变短。逻辑清晰。
2,内部类和外部类的联系?
内部类可以访问外部类的所有属性和方法。
(匿名内部类也是内部类所以也可以访问外部类的属性和方法)
内部类包含了一个指向外部类的引用。(因为内部类可以访问外部类的所有方法和属性)。
外部类对象包含了一个指向内部类对象的引用。(创建内部类对象时候,要通过外部类对象创建。)
3,内部类是如何多继承的?
4,为什么要设计匿名内部类?
既然内部类是为了继承,但是除了继承,内部类还可以扩展(除了继承的方法,自己还可以扩展方法。)(不用怎么的功能),扩展的功能可以由外部类的方法代替。
为了使用经常用的功能(继承功能),更方便所以设计了内部类。
5,内部类和匿名内部类的继承区别?
没有本质区别,内部类的继承就是普通的继承。(能扩展,能继承)
匿名内部类只能继承,不能扩展。
6,匿名内部类的继承和普通的继承区别?
不能扩展(不能写自己的方法)。只能实现继承来的方法。
7,匿名内部类和普通内部类继承的代码实现?
匿名内部类是普通内部类继承的简写:
1,匿名内部类new的是接口,所以需要实现接口的方法。所以说是简写。
但是匿名内部类无法扩展。
普通内部类继承接口:
public class pacel {
public static void main(String[] args) {
outer outs = new outer();
intence inten= outs.returnInner();
inten.prt();
}
}
class outer {
private class inner implements intence{
public void prt(){
System.out.println("this is inner function!!!");
}
}
public intence returnInner(){
return new inner();
}
}
interface intence{
public void prt();
}
匿名内部类继承接口:
public class anonymous {
public contents content(){
return new contents(){
public void prt() {
ppp();
System.out.println("this is anonymous class!"+str);
}
};
}
public static void main(String[] args) {
anonymous anony = new anonymous();
contents conts = anony.content();
conts.prt();
}
}
interface contents{
void prt();
}