Java|封装和继承

一、封装

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

  • 写代码时只需要做到属性私有,get/set。
    即对象的属性用private来进行修饰,当需要对其进行访问时用get方法,需要修改时用set方法来修改。
    如:

public class Student{
    //属性私有
    private String name;  //姓名
    private int id;  //学号
    private char sex;  //性别
}

    //提供一些可以操纵这些属性的方法 快捷键ctl + Enter 如:
public String getName() {
        return name;
    }

public void setName(String name) {
        this.name = name;
    }

调用时

public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("阿文");
    }

二、继承

  1. 什么是继承
  • 继承是一种类与类之间的关系
  • 即子类能够获得父类的 公开属性 和 公开方法
  • 继承的本质是对同一类的抽象,比如学生类和老师类都可以抽象为Person类
  • 子类继承父类,使用用extends关键字
  1. Java中的所有类都直接或间接的继承Object类
  • Object类是Java中的一个特殊的类,是所有类的超级父类;
  • Object类中的大部分方法都是native方法,方法是在JVM源码层实现的,效率很高。
  1. Java中类只支持单继承(一个父类可以有多个子类,一个子类只能有一个父类)
    //后续学到接口再来补充接口间接实现多继承的知识点

  2. Super

  • super只能在存在继承关系的类里使用,用于子类访问父类中的属性和方法
  • super的使用一般分为三种
  1. 直接引用:即super.×××直接饮用父类的成员

  2. 其实也算是一种直接引用。只不过是子类引用父类中和子类同名的属性或方法
    如:

//子类
public class Student{

    private String name = "全辣柯基";  //和父类同名的属性name
   
    //和父类同名的方法print
    public void print(){
        System.out.println("A");
}

    public void test(){
        print();  //输出A
        this.print();  //输出A
        super.print();  //输出B
        
        System.out.println(this.name);  //输出 全辣柯基
        System.out.println(super.name);  //输出  全辣鲤鱼
 }
}
//父类
public class Person{

    private String name = "全辣鲤鱼";  //姓名
   
    public void print(){
        System.out.println("B");
}
}
\
  1. 引用父类的构造方法
//父类
public class Person{

    public Person(){
        System.out.println("父类的无参构造执行了");
}
}
//子类
public class Student{

    public Student(){
        System.out.println("子类的无参构造执行了");
}
}
//测试代码
public static void main(String[] args) {
        Student s = new Student();
    }

测试代码的运行结果会输出

  • 父类的无参构造执行了
  • 子类的无参构造执行了
    也就是说,子类对象实例化时会自动调用父类的构造方法。

需要注意的点:

  • 上述例子使用的是默认的无参构造,也可显式定义含参构造方法。
  • 在子类的构造方法中使用super()调用父类的构造方法,必须写在方法的代码的第一行
  • super如果出现,一定只出现在子类的普通方法或构造方法内部的代码中!
  • this和super不能同时出现在同一个构造方法中。
  • this() 和 super() 都指的是对象,所以,均不可以在 static 环境中使用。
  • 从本质上讲,this 是一个指向本对象的指针, 然而 super 是一个 Java 关键字。
上一篇:【python 11】super()


下一篇:Python中super()详解及应用场景举例