封装、继承、多态

对象的三大特性:封装、继承、多态

封装

该漏的漏,该藏的藏

  • 高内聚,低耦合

    • 高内聚就是类的内部数据操作细节由自己完成,不允许外部干涉。
    • 低耦合:仅暴露少量的方法给外部使用
  • 封装:(数据的隐藏)

    • 通常,应禁止直接访问一个对象中数据的实际表示,而通过接口来访问,这称为信息隐蔽。
  • 记住这句话就够了:属性私有,get/set

    封装多是用在封装属性,方法用得少

封装的作用

  • 提高程序的安全性,保护数据
  • 隐藏代码的实现细节
  • 统一接口
  • 系统可维护性增加了

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
  • extends的意思是 “ 扩展 ” 。子类是父类的扩展。
  • java中类只有单继承,没有多继承。只能间接继承多个类。(一个儿子只能有一个亲爸爸,但是一个爸爸却可以有多个亲儿子)

在java中,所有的类,都默认直接或者间接继承object

继承时,子类会隐藏性的继承父类的无参构造

四个修饰符:

  • public :公共的
  • private :私有的
  • default :默认的
  • protected :受保护的

super 和 this

​ super能在子类去调用父类的属性(protected)

super注意点:

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能在出现子类的方法会构造方法中!
  • super和this不能同时调用构造方法!

super 和 this的区别:

  • 代表的对象不同:
    • this:本身调用者这个对象
    • super:代表父类对象的引用
  • 前提:
    • this:没有继承也可以用
    • super:只能在继承条件才可以使用
  • 构造方法
    • this:本类的构造
    • super:父类的构造

注意:如果父类创建了有参构造,随即父类的无参构造就消失了,那么子类也将无法创建无参构造。

练习代码:

package com.chen.oop.demo02;

public class Application {

    public static void main(String[] args) {
        Student s = new Student();

        //s.text("大幂幂");
        s.text1();
    }
}
package com.chen.oop.demo02;

public class Person {

    public Person(){

    }
    //创建一个受保护的属性
    protected String name = "父类";

    public void print(){
        System.out.println("父类的方法");

    }

}
package com.chen.oop.demo02;

public class Student extends Person{

    private String name = "子类";

    public Student(){
        //隐藏代码:调用了父类的无参构造
        super();
        System.out.println("子类的构造器");

    }

    public void print(){
        System.out.println("子类的方法");
    }

    public void text1(){
        //调用当前类里的方法
        print();
        //调用当前类里的方法
        this.print();
        //调用父类里的方法
        super.print();

    }


    public void text(String name){
        System.out.println(name);
        //this 指向当前的一个类
        System.out.println(this.name);
        //super 指向父类
        System.out.println(super.name);
    }

}
posted @ 2021-03-05 16:54  恶的反思  阅读(50)  评论(0)    收藏  举报