Java语言的三大特征

  1. 封装
  2. 继承
  3. 多态
  4. 抽象类

1.封装

封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 。
定义一个Person类,并将成员变量私有化

测试类
将构造方法私有化
测试类
封装的好处:
隐藏类的实现细节
只能通过规定方法 访问
方便加入控制语句
方便修改实现

2.继承

1.继承是面向对象程序设计不可缺少的设计思想,是实现代码可重
用的根基,是提高代码可扩展性的主要途径。
● 继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,
并能扩展新的能力。
● 在JAVA中使用extends关键字来表示继承关系。
● JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个
直接父类。
● 继承之后子类可以调用父类的所有非私有属性和非私有方法
● 继承的形式:
● [访问权限修饰符][修饰符] 子类名 extends 父类名{子类体}
2.继承的传递性
C类从B类继承,B类又从A类继承
那么C类就具有B类和A类的所有非私有属性和非私有方法
当一个没有继承任何一个类时,jvm会默认让类继承Object类
Object是 java为所有类提供的基类
● 继承中的构造方法
子类构造方法会先调用父类构造方法
使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行
如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无
参数的构造方法。
• super关键字用途
• 使用super关键字访问父类成员
• 用super.成员变量名来引用父类成员变量
• 用super.方法名(参数列表)访问父类的方法。
• 用super.构造方法(参数列表)访问父类构造方法
误区: 不要把super误认为是父类对象.在创建子类对象时,
不会创建父类对象.
只会将父类中的信息加载到子类对象中存储.
● 方法的重写(OverRide)
● 应用场景
当父类的方法实现不能满足子类需求时,可以对方法进行重写( override)
● 在子类中可以根据需要对从基类中继承来的方法进行重写。
● 方法重写规则
• 方法名相同、参数列表相同;
• 返回值类型相同;
• 访问权限不能小于父类权限;
注意:构造方法,静态方法不能重写,成员变量不存在重写
定义一个动物类作为父类
设计一个狗类作为子类
设计一个猫类作为子类
测试类
测试类
设计一个哮天犬类继承狗类

3.多态

同一种事物,在不同时刻表现不同的状态
● 多态存在的三个必要条件
● 要有继承(包括接口的实现)(前提条件)
● 要有重写(前提条件)
● 父类引用指向子类对象
当编译期类型是父类,运行期类型是子类时,被称为父类引用指向子类对象
对一般成员:
简单的说:编译看左边,运行看右边。
对静态成员:
简单的说:编译和运行都看左边。
定义狗类继承动物类
定义猫类继承动物类
定义人类,方法的参数为动物类的对象,实现多态
定义动物类(抽象类)
测试类
测试类

抽象类

● 抽象方法
• 抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.
• 抽象方法必须用abstract关键字进行修饰.

● 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象
类。
● 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方
法和构造方法。
● 用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必
须定义成抽象类。
● 特点:
• 抽象类不能被实例化,但可以有构造方法,因为抽象类中含有无具体实现的方法,
所以不能用抽象类创建对象。
● 抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实
现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一
样。否则,该类也必须声明为抽象类。
● 抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,
设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并
覆盖抽象方法,实现具体功能。

定义动物抽象类作为父类
定义猫类继承动物类
定义狗抽象类继承动物类
定义哮天犬类继承狗类

猜你喜欢

转载自blog.csdn.net/weixin_64189867/article/details/130537280
今日推荐