面向对象三特性之一,继承

发布于:2024-05-16 ⋅ 阅读:(89) ⋅ 点赞:(0)

继承概念

在现实生活中我们常听到继承我的花呗,继承遗产等等。
在Java中就是一个类继承另一个类,然后就拥有了那个类的成员变量和成员方法。继承类被叫为子类(也叫派生类),被继承的类就叫父类(也叫基类,超类)。
继承最大的作用就是实现对代码的复用。

定义格式

使用关键字extends来实现,在定义子类时加上子类 extends 父类
Java中每一个类只能有继承一个父类。
在Java中最多不希望超过3层继承。
例如,Dog类继承Animal类定义如下:

class Animal{
	
}
class Dog extends Animal{

} 

父类成员的访问

当子类成员和父类成员出现同名的情况的时候,会默认访问子类成员
例如在下面代码中在子类中设置名字时设置的是子类中的name。

class Animal{
	String name;
}
class Dog extends Animal{
    String name;
    public void setNam(String na){
          name = na;
    }
} 

成员(包括成员变量和成员方法)访问规则

1.如果访问的成员变量子类中有,优先访问自己的成员变量
2.如果访问的成员子类中无,则访问父类中继承下来的,如果父类中也没有,则编译报错。
3.如果访问的成员与父类的成员同名,则优先访问自己的。
注意要考虑访问修饰限定符的修饰。

super关键字

那想访问父类的成员要如何做呢?就需要使用关键字super,如上述代码进行下列修改就是访问的父类的name。

class Animal{
	String name;
}
class Dog extends Animal{
    String name;
    public void setNam(String na){
          super.name = na;
    }
} 

super使用规则

1.super.变量名;访问父类重名成员变量;
2.super.方法名();访问父类重名成员方法;
3.super();访问父类构造方法,必须在第一行;
4.super只能访问直接父类。

访问父类构造方法注意事项

当父类中提供了构造方法,子类必须也提供相同参数的构造方法。当我们父类提供了,子类没提供就会报错。(先要帮父类成员变量初始化,我称为“尽孝“”)

111

因为super调用父类构造函数和this调用构造函数都必须要在第一行,所以不能同时出现。

代码执行顺序

静态只执行一次,父类优先子类执行。
1.父类的静态代码块
2.子类的静态代码块
3.父类的构造代码块
4.父类的构造方法
5.子类的构造代码块
6.子类的构造方法

final关键字

final和c语言中const类似。
在Java中最多不希望超过3层继承。那我们要想该类不能再被继承,就可以用final来修饰该类。
final修饰类

final修饰放在访问修饰限定符前面后面都可以

public final class Animal{ }
final public class Animal{ }

1.final修饰成员变量将其改为常量,不能修改
2.final修饰引用数据,引用指向的地址不能变,但对象值可变。如:
final修饰引用

3.final修饰类,表示该类不能被继承
4.final修饰方法,表示该方法不能被重写。


网站公告

今日签到

点亮在社区的每一天
去签到