Java基础学习笔记_继承关系中成员变量、成员方法的使用特点

1、Java继承关系中成员变量的使用特点:

遵循“就近原则”,局部位置有就使用,

没有就去本类的成员位置找,有就使用,

没有就去父类的成员位置找,有就使用,没有就报错。

public class Fruit {
    int price = 20;
}

public class Apple extends Fruit {
    int price = 10;
    public void showPrice() {
        int price = 5;
        System.outprintln(price);            //5
        System.outprintln(this.price);       //10
        System.outprintln(super.price);      //20
    }
}

public class Test {
    public static void main(String args[]) {
        Apple apple = new Apple();
        apple.showPrice();
    }
}

 上述代码中,第九行代码打印值为5;

若将第八行注释掉,则打印值为10;

若继续将第六行注释掉,则打印值为20;

若将第二行注释掉,则系统报错。

默认打印的是离自己最近的值。

如果在上述情况下想要调用本类的成员变量,需要使用this关键字;

如果想要调用父类的成员变量,则需要使用super关键字。

2、Java继承关系中成员方法的使用特点:

方法重写:

子类中出现与父类一模一样的方法时(子类方法的权限修饰符不小于父类方法,返回值类型、方法名和参数列表相同),会出现覆盖操作,也称为重写或者复写。

父类私有方法,子类看不到,因此父类私有方法的重写也就无从谈起。

重写注意事项:

子类方法的权限修饰符不小于父类方法。

静态只能覆盖静态。

覆盖的使用场景

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法。

这样,既沿袭了父类的功能,又定义了子类特有的内容。

方法重写和重载有什么区别

方法的重写用在子类方法与父类方法一模一样时,除权限修饰符以外,返回值类型、方法名和参数列表都是相同的。

重载用在同一个类中各方法方法名相同,参数列表不同(与返回值类型没有关系)的情况。

子父类中构造方法的用法

1、子类的初始化过程中,首先回去执行父类的初始化动作。

因为子类的构造方法中默认有一个super()。

2、如果父类没有无参构造方法:

  • 使用super调用父类的带参构造。(推荐方式)
  • 使用this调用本身的其他构造。

静态代码块、构造代码块,构造方法的执行顺序

父类静态代码块→子类静态代码块→父类构造代码块→父类构造方法→子类构造代码块→子类构造方法

猜你喜欢

转载自blog.csdn.net/qq_43191910/article/details/114780075