Java基础之面向对象

1.多态,继承,封装

Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用?

答:多态的优点

1. 消除类型之间的耦合关系

2. 可替换性

3. 可扩充性

4. 接口性

5. 灵活性

6. 简化性

多态存在的三个必要条件

1.继承

2.重写

3.父类引用指向子类对象

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

重载(overloading)与重写(override)的区别? 

答:重载体现了java编译时的多态性,覆写体现为运行时的多态性

重载(overloading):一般用于在类中实现若干重载的方法,方法名相同而参数形式不同,以下是重载的规则:

使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型指参数类型、参数个数、不同的参数顺序。

不能通过访问权限、返回类型、抛出的异常进行重载,原因:因为当在调用时不能指定类信息(权限和返回值等等),编译器不知道你调用了哪个重载方法,这也是某一年名企华为的面试题。

方法的异常类型和数目不会对重载造成影响。

重写(override):在继承和实现接口中应用的比较多,有如下几个规则:

重写的方法除了访问权限不一致之外,其他的必须一致

重写的参数列表必须完全与被重写的方法相同,否则不能称其为重写。

重写方法的访问修饰符一定要大于被重写方法访问修饰符(public>protected>default>private)。

重写方法的返回值必须和被重写方法的返回值一致。

重写方法所抛出的异常必须和被重写方法所抛出的异常一致,或者是其子类关系。

被重写方法不能为private,否则在其子类只是定义了一个新方法,并没有对其进行重写。

重写的记忆方法:只有实现的功能代码不一致,其他的(函数名、参数列表、返回值类型)都必须一致。

补:当父类功能无法满足子类的功能需求时使用继承方式进行重写,实现接口的类中方法亦叫重写。

Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

答:构造函数是类的对象在创建的时候会调用的函数。如果程序员没有设置构造函数,也系统会为该对象提供一个默认的构造函数。构造函数的重载和方法的重载类似,可以为构造函数提供多个参数表,每一个对应的构造函数有其唯一匹配的参数表。  java中不支持构造函数的复制。构造函数的复制属于C++的内容。

2.其他

接口和抽象类有什么区别?为什么要这样设计?‘

答:接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

7、抽象类里可以没有抽象方法

8、如果一个类里有抽象方法,那么这个类只能是抽象类

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口,但类只能单根继承。

你可能感兴趣的:(Java基础之面向对象)