# 封装,继承,多态
1. 封装
封装的优点:
- 提高代码的复用性,常用的代码或者功能封装到方法中,可以在其他地方反复调用
- 提高代码的安全性,重要的信息私有化,不对外暴露
- 封装代码的实现细节,便于修改内部代码,提高可维护性
- 简化外部的调用,便于调用者使用
private修饰符的特点:
- private是四种权限修饰符中的一种,权限最小
- private可以修饰成员变量和成员方法
- private修饰属性和方法,就只能在当前类中才能访问,在当前类以外的其他地方不能访问
- private修饰的属性,称之为私有属性,private修饰的方法,称之为类中的私有方法
2. 重载
方法重载:类中有多个方法,具有相同的方法名,但是方法的参数不相同。
方法重载,要求:
- 方法名必须相同
- 方法的参数列表必须不同
- 方法的修饰符,返回类型,抛出异常没有限制
3. 构造器
类中的构造器也称之为构造方法,构造函数,是在创建对象的时候必须调用的
构造器必须有一下要求:
- 必须和类的名字保持一致
- 必须没有返回值,不可以写void
构造器的作用:
- 使用new关键字来创建对象的时候,后面跟的必须是类中的构造器
- 构造器中的代码,在对象创建的时候会被调用,从而可以完成对象的初始化工作
默认构造器:
如果没有定义构造器,在编译之后,会自动的生成一个无参构造器,并且在构造器中不执行任何代码。
当在类中定义了一个构造器,系统就不会再生成无参构造器,需要自己定义了。
构造器之间的调用:
使用this关键字,可以在构造器中,调用另一个构造器
4. 继承
类与类之间的关系有很多种,计征就是其中一种关系,除此之外,有依赖,组合,集合等
表现:父子类,is-a;父类更通用,子类更具体
继承的好处,优点:
- 提高代码的复用性
- 类与类之间产生了关系(is-a),这是使用多态特性的前提。
继承的关键字:子类继承父类,使用关键字extends
子类继承父类,继承了父类的属性和方法,并可以在子类中访问这些属性和方法。(父类中的私有属性和方法,子类不能访问。父类中的构造器,子类也是不能继承的)
java中,类与类之间的继承是单继承的;
Java中,如果,没有给类指定父类的话,默认为继承父类Object
Object类中没有属性。
Java中,每一个类都是之间或者间接继承了Object,可以说Object是所有类的父类。
子类继承父类,创建子类对象的时候,会默认调用父类的构造器;
子类继承父类,会继承父类的属性和方法,那么就需要先调用父类的构造器对父类的属性进行初始化,初始化完成后再给子类使用。
构造器的作用之一就是进行初始化。
5. supper关键字
在类中,除了可以使用this关键字。还可以使用supper关键字。
在类中,使用supper关键字一般做一下事情:
访问父类中的属性:
调用父类中的方法:
调用父类中的构造器:
子类构造器中可以隐式调用父类无参构造器。
子类构造器可以显式调用父类构造器:无参,有参都可以。使用super关键字。
其中,在构造器中可以使用this关键字调用类中的其他构造器,也可以使用super调用父类中的构造器,但是this和super这俩种调用构造器的代码,不能同时出现,否则会报错。因为两都必须出现在第一行。
6. 方法重写
如果子类和父类中出现了相同的方法,这种情况就叫做方法的重写(Override)
方法重载是发生在同一个类中,方法重写发生在子父类之间。
父类中的一个方法和子类中的一个方法,满足以下要求,就是方法的重写:
注意,大多数情况下,子类中重写的方法 会和 父类中的方法 完全保持一致,只有方法的实现不 同。(也就是大括号中代码不一样)
父类中不能被重写的方法:
- 父类中的静态方法不能被子类重写
- 父类中私有方法不能被子类重写
7. 多态
不同的对象,进行同一个行为,但是所表现出来的不同形态。
多态的前提:
- 子类继承父类
- 子类重写父类中的方法
- 父类的引用指向子类的对象
类实现接口,这是一种特殊形式的继承,多态也可以体现在类和接口的关系中
使用多态的好处:
8. instanceof关键字
在使用多态的情况下,instanceof关键字就显得特别重要,因为它能告诉我们,当前父类的引用, 到底是执行的哪一个子类对象
public void test(Person p){
if(p instanceof Student){
}
else if(p instanceof Teacher){
}
}
9. 引用类型的转换
多态中的类型转换分为向上转型与向下转型两种:
|