[2022.10.18]封装,继承,多态
封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制
封装的作用:提高程序的安全性,保护数据 2.隐藏代码的细节 3.统一接口 4.提高维护性
🥦
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
1.子类拥有父类非 private 的属性、方法。
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。
4.Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
5.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
ctrl+h快捷键可以打开idea的继承树
1.Java中 所有的类都默认直接或间接继承object类
2.Java只能单继承 一个子类只能有一个父类
3.私有类不能被继承
🥦
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系类型转换异常 classCastException
3.存在条件:1.继承关系,2.方法需要重写,3.父类引用指向子类对象 Father p = new Son( );
🥦
super与this
super注意点
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法
和this相比
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提:
this:没有继承也可以使用
super 只能在继承条件才可以使用
构造方法:
this():本类的构造
super():父类的构造
🥦
构造器就是构造方法
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
1.必须和类的名字相同
2.必须没有返回类型,也不能写void
构造器:
1.和类名相同
2.没有返回值
作用:
1.new 本质是在调用构造方法
2.初始化对象的值
注意点:
1.定义有参构造后,如果想使用无参构造,显式的定义一个无参的构造
alt+insert快捷键生成构造器(idea)
构造器
public class constructor01 {
public static void main(String[] args) {
Person person = new Person();
}
}
class Person{
int age;
String name;
//无参构造。
public Person(){
System.out.println("这是无参构造!");
}
//有参构造。
public Person(int pAge){
age=pAge;
}
public Person(String pname,int pAge){
name =pname;
age=pAge;
}
}
构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。
构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。
🥦
重写:需要有继承关系,子类重写父类的方法
重写也称覆盖
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小 public>protected>default>private
4.抛出的异常:范围可以被缩小,但不能扩大:ClassNotFoundException-->Exception()
重写 子类的方法和父类必须要一致,方法体不同
为什么需要重写:
父类的功能,子类不一定需要,或者不一定满足
重写与重载:https://www.runoob.com/java/java-override-overload.html