2021-08-17 11:14

最新Java程序员经典面试题大全(一) - 面向对象三大特征

王姐姐

职场

(1174)

(0)

收藏

1. 封装

把客观事物封装成抽象的类,封装可以隐藏对象的属性和实现细节,仅对外暴露公共的访问方式,使得代码模块化。

1.1. 优点

隐藏信息和细节,提高安全性;

良好的封装可以减少耦合性,提高复用性;

对类内部结构可以随意修改,只要保证公有接口始终返回正确的结果即可。

1.2. 体现

public default protected private 等设置访问权限的关键字。

比如类的属性私有化 private修饰,提供公有的 setter getter 方法对值进行获取和修改。同时,还可以在setter getter函数里进行数据校验和对返回值做限制,提高了安全性。

2. 继承

继承是指可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。目的也是为了代码重用。

2.1. 构造函数

父类中private修饰的属性和方法子类是无法继承的,构造函数只能调用而不能被继承。
子类在实例化的时候会调用自身构造器,而java编译器会默认在子类构造器的第一行用super()先调用父类的无参构造器。如果父类没有无参构造器,则子类在实例化的时候会报错。这个时候就需要显示的在子类构造器第一行(必须在第一行)指定构造器super(args)来指定调用父类哪个构造器。

2.2. protected关键字

proctected关键字修饰的属性和方法,可以隔绝外部其他类的访问,却可以让子类有权限访问。最好属性都以private修饰,父类中希望子类可以访问到,又不希望公有的方法,可以用protected修饰。

2.3. 向上转型

比如List list = new ArrayList() 将子类的实例声明为父类的类型,提高了通用性,也隐藏了子类的具体实现。

2.4. 单继承

Java 的继承是单继承,只能继承自一个类,但是可以实现多个接口。

2.5. final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写;被定义为 final 的变量不能被修改。

2.6. 缺点

继承是一种强耦合关系,子类会由于父类的改变而改变;
继承破坏了封装的特性,父类的实现和细节对于子类来说都是透明的。

3. 多态

多态是同一个行为具有多个不同表现形式或形态的能力。包括覆盖(重写)和重载,重写,是指子类重新定义父类的方法。重载,多个方法同名不同参(参数个数、参数类型等)。多态更多的是指重写。

3.1. 多态的优点

· 消除类型之间的耦合关系

· 可替换性

· 可扩充性

· 接口性

· 灵活性

· 简化性

3.2. 多态存在的三个必要条件

· 继承

· 重写

· 父类引用指向子类对象:Parent p = new Child();

 java-polymorphism-222.png

3.3. 多态的实现方式

· 重写

· 接口

· 抽象类和抽象方法


0条评论

点击登录参与评论