Java三大特性之封装继承多态

时间:2022-02-02 23:11:45

一、 封装

1. 封装是什么?


访问权限的控制常常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称为“封装”。
通常人们也单独只将具体实现的隐藏称为封装

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别(POJO)

(我只给你看我希望你看到的东西,不该给你的东西你不需要知道)

2. 为什么封装?


封装的意义在于,这一点并不重要,重要的是类对外提供的方法。
增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

3. 以POJO为例论封装的优点

package com.ashes.bean;

public class UserLogin {

private String username;

public UserLogin() {
super();
}

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}

此类有三项内容:
- 一个私有的数据域
- 一个公有的域访问器方法
- 一个公有的域更改器方法
优点:
(1)可以改变内部实现,除了该类的方法之外,不会影响其他代码。
(2)更改器方法可以执行错误检查,然而直接对域进行赋值将不会进行这些处理(例如给名字做正则表达式处理)

补充:
POJO的格式是用于数据的临时传递,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。

4、权限的访问

Java三大特性之封装继承多态

控制对成员的访问权限有两个原因:

(1)为了使用户不要碰触那些他们不该碰触的部分,这些部分对于类内部的操作时必要的,但是它们并不属于客户端程序员所需要的一部分;
(2)为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大影响。

二、继承

1. 继承是什么?


基于已存在的类构造一个新类。继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。

基类和派生类之间的关系称为“is-a”(是一个)关系
is-a表明子类的每个对象也是超类的对象

(我是你但又不是你,我是你因为我有你的可访问的所有的属性和方法,但我又不是你,因为我可以对你进行扩展)

2. 为什么继承?


为了提高代码的重用性,使代码更加简洁(代码共享)

3.聚合是什么?


只需在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称为“聚合”。

聚合经常被视为“has-a”(拥有)关系
(我有你就可以使用你的属性和方法)

4. 组合和继承产生的竞争


组合和继承都允许在新的类中放置子对象,组合是显式地这样做,而继承是隐式地做。

5. 继承的缺点

  • 继承是侵入式的,只要你继承,不管你要不要,都会给你
  • 增强了耦合性,当父类的常量、属性、方法需要修改的时候,需要考虑子类的修改。
  • 降低了代码的灵活性

重点内容

三、多态

1. 多态是什么?


一个对象变量可以指示多种实际类型的现象被称为“多态
多态:一种数据类型多种表现形式(一个接口,多种实现)

(1)有继承关系
(2)子类引用赋值给父类对象
(3)方法的重写

2. 重写


子类定义一个和父类相同的方法
(子类方法不能低于父类的可见性)
(1)方法名相同
(2)参数列表相同
(3)返回值类型一致

3. 重载


方法名相同,
参数列表不同(类型不同、个数不同、顺序不同)

4. 动态绑定


在运行时能够自动地选择调用哪个方法的现象称为“动态绑定