JAVA面试0823Word文件下载.docx

上传人:b****5 文档编号:21374402 上传时间:2023-01-30 格式:DOCX 页数:21 大小:1.55MB
下载 相关 举报
JAVA面试0823Word文件下载.docx_第1页
第1页 / 共21页
JAVA面试0823Word文件下载.docx_第2页
第2页 / 共21页
JAVA面试0823Word文件下载.docx_第3页
第3页 / 共21页
JAVA面试0823Word文件下载.docx_第4页
第4页 / 共21页
JAVA面试0823Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

JAVA面试0823Word文件下载.docx

《JAVA面试0823Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA面试0823Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

JAVA面试0823Word文件下载.docx

.

Java只支持单继承,不支持多继承。

一个类只能有一个父类,不可以有多个父类。

classSubDemoextendsDemo{}//ok

classSubDemoextendsDemo1,Demo2...//error

Java支持多层(重)继承(继承体系)

classA{}

classBextendsA{}

classCextendsB{}

不允许仅仅为了拿别人东西而继承,把要的抽出来.

所属关系:

isa关系

8.子父类中成员的体现

a.先看成员变量

子有就不找父!

子父类中成员变量的内存图解

这种同名情况开发时不会出现,面试时多见

子类不能直接访问父类中私有的内容!

(继承过来了,但其他类不能直接访问)

面试喜欢考

b.成员函数

在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。

父类中的私有方法不可以被覆盖。

覆盖的应用

上图的改进,重复代码不用写

C.构造函数

子类中所有的构造函数默认都会访问父类中空参数的构造函数

注意上图中写了super(x)就没有默认的super()了

为什么子类实例化时要访问父类呢?

因为父类的构造函数对自己的东西初始化了!

(拿人家东西必须知道人家咋初始化的)

注意下图结果

classFu

{

Fu()

{

super();

show();

return;

}

voidshow()

System.out.println("

fushow"

);

}

上图中

intnum=8;

//显示初始化在super之后

调用fu的show发现子类有show就用子的,但是num还是默认的0,这样super完了才是num=9;

Zi()

分水岭//-->

通过super初始化父类内容时,子类的成员变量并未显示初始化。

等super()父类初始化完毕后,

//才进行子类的成员变量显示初始化。

ziconsrun...."

+num);

一个对象实例化过程:

Personp=newPerson();

1,JVM会读取指定的路径下的Person.class文件,并加载进内存,

并会先加载Person的父类(如果有直接的父类的情况下).

2,在堆内存中的开辟空间,分配地址。

3,并在对象空间中,对对象中的属性进行默认初始化。

4,调用对应的构造函数进行初始化。

5,在构造函数中,第一行会先到调用父类中构造函数进行初始化。

6,父类初始化完毕后,在对子类的属性进行显示初始化。

7,在进行子类构造函数的特定初始化。

8,初始化完毕后,将地址值赋值给引用变量.

10是从8过度来的

9.final关键字

继承弊端:

打破了封装性。

final关键字:

1,final是一个修饰符,可以修饰类,方法,变量。

2,final修饰的类不可以被继承。

3,final修饰的方法不可以被覆盖。

4,final修饰的变量是一个常量,只能赋值一次。

为什么要用final修饰变量。

其实在程序如果一个数据是固定的,

那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。

而且这个变量名称的值不能变化,所以加上final固定。

写法规范:

常量所有字母都大写,多个单词,中间用_连接。

publicstaticfinaldoubleMY_PI=3.14;

10.抽象类

第三点的好处:

如果想成为犬科的一元,必须具备犬科的特点,否则不让实例化!

抽象类的五个问题

11.抽象类练习

12.接口

abstractclassAbsDemo

abstractvoidshow1();

abstractvoidshow2();

当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用

另一种形式定义和表示,就是接口interface。

//定义接口使用的关键字不是class,是interface.

对于接口当中常见的成员:

而且这些成员都有固定的修饰符。

1,全局常量:

publicstaticfinal

2,抽象方法。

publicabstract上面的两句可以省略,但是阅读性差

由此得出结论,接口中的成员都是公共的权限.

接口的实现

类与类之间是继承关系,类与接口直接是实现关系。

接口不可以实例化。

只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。

否则,这个子类就是一个抽象类。

在java中不直接支持多继承,因为会出现调用的不确定性。

所以java将多继承机制进行改良,在java中变成了多实现。

一个类可以实现多个接口。

interfaceA

publicvoidshow();

interfaceZ

publicintadd(inta,intb);

classTestimplementsA,Z//多实现

{

publicintadd(inta,intb)

returna+b+3;

publicvoidshow(){}

一个类在继承另一个类的同时,还可以实现多个接口。

classQ

publicvoidmethod()

{}

abstractclassTest2extendsQimplementsA,Z

接口的出现避免了单继承的局限性。

接口与接口之间是继承关系,而且接口可以多继承

interfaceCC

voidshow();

interfaceMM

voidmethod();

interfaceQQextendsCC,MM//接口与接口之间是继承关系,而且接口可以多继承。

voidfunction();

classWWimplementsQQ

{//覆盖3个方法。

publicvoidshow(){}

publicvoidmethod(){}

publicvoidfunction(){}

支不支持多继承就是看有没有方法体

接口的特点:

(鼠标和笔记本)

●接口是对外暴露的规则。

(插座的插口)

●接口是程序的功能扩展。

(鼠标,硬盘,键盘都可以插)

●接口的出现降低耦合性(鼠标和笔记本的联系程度)

●接口可以用来多实现。

●类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

接口与接口之间可以有继承关系。

抽象类和接口的异同点:

相同点:

都是不断向上抽取而来的。

不同点:

1,抽象类需要被继承,而且只能单继承。

接口需要被实现,而且可以多实现。

2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可直接使用非抽象方法。

接口中只能定义抽象方法,必须由子类去实现。

3,抽象类的继承,是isa关系,在定义该体系的基本共性内容。

接口的实现是likea关系,在定义体系额外功能。

注意啥时候用抽象类,啥时候用接口!

分析下面的例子:

abstractclass犬

abstractvoid吼叫();

//abstractclass导盲

interface导盲

abstractvoid导盲();

class导盲犬extends犬implements导盲

publicvoid吼叫(){}

publicvoid导盲(){}

接口的应用

interfaceUSB//暴露的规则。

publicvoidopen();

publicvoidclose();

classBookPC

publicstaticvoidmain(String[]args)

useUSB(newUPan());

//功能扩展了。

useUSB(newUsbMouse());

//使用规则。

publicstaticvoiduseUSB(USBu)//接口类型的引用,用于接收(指向)接口的子类对象。

//USBu=newUPan();

if(u!

=null)

{

u.open();

u.close();

}

//一年后。

------------------------------

//实现规则。

/这些设备和电脑的耦合性降低了。

classUPanimplementsUSB

publicvoidopen()

upanopen"

publicvoidclose()

upanclose"

classUsbMouseimplementsUSB

UsbMouseopen"

UsbMouseclose"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1