Java学习09

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」。

  • 继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。

    • 当类之间产生了关系后,其中各类中的成员变量,又产生了哪些影响呢?
      • 成员变量不重名:如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。
      • 成员变量重名: 如果子类父类中出现重名的成员变量,这时的访问是有影响的。
      • 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。
  • 成员方法不重名: 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对 应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

  • 成员方法重名——重写(Override): 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

  • 方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不变,重新实现。

super和this的含义:

  • super:代表父类的存储空间标识(可以理解为父亲的引用)。
  • this :代表当前对象的引用(谁调用就代表谁)。

class Person105{
    public void fun(){
        this.printInfo();
    }
    //如果现在父类中的方法使用了private定义,那么就表示该
    // 方法只能够被父类所使用,子类无法使用,
    // 也就是说子类根本就不知道父类有这种方法。
    //此时子类方法中的public()相当于新定义的一个普通方法
    private void printInfo(){
        System.out.println("1、[Person类]printInfo方法");
    }
}
class Student105 extends Person105{//现在Person出现了一个子类
    public void printInfo(){
        System.out.println("2、[Student类]printInfo方法");
    }


}

public class Test08 {
    public static void main(String[] args) {
    Student105 stu = new Student105();
    stu.fun();
}
}

复制代码
class Person106{
    public String info = "www.baidu.com";
    public void printInfo(){
        System.out.println("1111111111111");
    }
}
class Student106 extends Person106{//子类调用父类方法是用super
    //调用明确,查错方便
    public int info = 100;
    public void printInfo(){
        System.out.println(super.info);
        System.out.println(this.info);
        super.printInfo();
        System.out.println("2222222222222");
    }
}
public class Test09 {
    public static void main(String[] args) {
        Student106 stu = new Student106();
        stu.printInfo();
    }
}

复制代码