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

JAVA基础--db10_java多态-内部类

2015-10-01 17:33 621 查看
多态:



多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容(前期定义了一个动物,后面来了一个猪,猪属于动物,可以将猪作为动物传入从而使用)

//一只鸡去吃饭,后来鸡多了,抽成鸡类,让鸡去吃饭;再后来让了猪,再抽取,变成动物,让动物去吃饭。这就是多态的好处

多态的弊端:前期定义的内容不能使用后期子类的特有内容。

多态的前提:1:必须要有关系(继承/实现)

2:必须要有覆盖

注意:如果为了提高扩展性,用父类型创建更好;如果为了使用子类特有功能向下转型。

多态的特点:



成员变量:编译和运行都参考左边

成员函数:编译看左边运行看右边

静态函数:编译和运行都参考左边;其实静态根本不该讨论,因为可以类名调用

内部类:



生成的class字节码文件



生成3个。外部类访问内部类,必须在外部类中创建一个方法,方法中创建内部类的对象才能访问

内部类一般用于类的设计:分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容

类似:铁扇公主和孙悟空

其他类直接访问内部类中的成员:

Outer.Inner in = new Outer().new Inner();

//解释new后面的内容,外部类对象.成员

如果内部类中定义了静态成员,那么该内部类必须是静态的

几种内部类的书写格式:



还有局部内部类,匿名内部类

局部内部类中访问局部变量,变量必须是final

匿名内部类:就是内部类的简写格式

前提:内部类必须继承或者实现一个外部类或者接口

匿名内部类:其实就是一个匿名子类对象

格式:

new 父类(接口或类){子类内容};

public
class
HelloWorld {

public
static void
main(String[]
args) {

newOuter().method();

}

}

abstract
class
Demo{

abstract
void
show();

}

class Outer{

int
num = 4;

/* class Inner extends Demo{//内部类

void show(){

System.out.println(num);

}

}*/

public
void
method(){

new Demo(){

void show(){

System.out.println("run");

}

}.show();

}

}

情景一:当函数的参数是接口类型时,而且接口中的方法不超过三个

可以用匿名内部类作为实际参数进行传递

里面有多个方法时的调用:new其父类



面向对象,对象的初始化过程:1-6的顺序



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: