您的位置:首页 > 编程语言 > Java开发

为什么要设计内部类?它要解决什么问题?它的特点是什么?

2016-10-12 21:23 423 查看
1,为什么要设计内部类,它解决了什么问题?设计的目的是什么?
如果想让一个类继承多个接口(可以多继承接口)继承多个抽象类是做不到。但是在设计比较复杂的时候需要继承多个接口或者抽象类,总不能全部功能写在一个类当中,所以为了实现继承多个接口或者抽象类,就设计了内部类。
问题:实现多继承又有什么用呢?有什么样的问题,必须是要求多继承的吗?
如果是单继承,一个复杂的功能,只能引进来一个类来帮助,这个类会写的很长。如果实现多继承,会使每个类的代码变短。逻辑清晰。
 
2,内部类和外部类的联系?
内部类可以访问外部类的所有属性和方法。
(匿名内部类也是内部类所以也可以访问外部类的属性和方法)
内部类包含了一个指向外部类的引用。(因为内部类可以访问外部类的所有方法和属性)。
外部类对象包含了一个指向内部类对象的引用。(创建内部类对象时候,要通过外部类对象创建。)
 
3,内部类是如何多继承的?
 
4,为什么要设计匿名内部类?
既然内部类是为了继承,但是除了继承,内部类还可以扩展(除了继承的方法,自己还可以扩展方法。)(不用怎么的功能),扩展的功能可以由外部类的方法代替。
为了使用经常用的功能(继承功能),更方便所以设计了内部类。
 
5,内部类和匿名内部类的继承区别?
没有本质区别,内部类的继承就是普通的继承。(能扩展,能继承)
匿名内部类只能继承,不能扩展。
 
6,匿名内部类的继承和普通的继承区别?
不能扩展(不能写自己的方法)。只能实现继承来的方法。
 
7,匿名内部类和普通内部类继承的代码实现?
匿名内部类是普通内部类继承的简写:
1,匿名内部类new的是接口,所以需要实现接口的方法。所以说是简写。
但是匿名内部类无法扩展。
 
普通内部类继承接口:
public class pacel
{
public static void main(String[]
args) {
ou
4000
ter
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();
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 内部类
相关文章推荐