java 继承 test

注意
本文最后更新于 2023-12-08,文中内容可能已过时。
引用

继承的好处:

  1. 提高了代码的复用性
  2. 提高了代码的维护性
  3. 让类与类之间产生了关系,是多态的前提

继承的弊端:类的耦合性很强

设计原则:低耦合,高内聚。

  • 耦合:类与类的关系。
  • 内聚:自己完成事情的能力。

1 java 中的继承特点

Java 只支持单继承,不支持多继承。Java 支持多层继承(继承体系)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class A {
}

class B extends A {
}
/*
class C extends A,B {
}
*/

class C extends B {
}

class ExtendsDemo {
  public static void main(String[] args) {

  }
}

2 java 中的继承注意事项

  1. 子类只能继承父类所有非私有的成员(成员方法和成员变量)
  2. 子类不能继承父类的构造方法,但是可以通过 super 关键字去访问父类构造方法。
  3. 不要为了部分功能而去继承

那么,我们什么时候考虑使用继承呢? 继承中类之间体现的是:”is a”的关系。
如果两个类满足这个关系:xxx is a yyy,那么他们就可以使用继承。

1
2
3
Student,Person  对
Dog,Animal  对
Dog,Pig  错

3 继承

继承间的构造方法关系:创建子类对象,会先去访问父类的构造方法。对父类的数据进行初始化。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package jicheng;

class Fu{
  public int num = 10;
  public Fu(){
    System.out.println("父类");
  }
}
class Zi extends Fu{
  public int num = 20;
  public Zi(){
    System.out.println("子类");
  }
  public void show(){
    int num = 30;
    System.out.println(num);//30
    System.out.println(this.num);//20
    System.out.println(super.num);//10
  }
}

public class test {
  public static void main(String[] args) {
    Zi z = new Zi();
    z.show();
  }
}

程序运行结果

1
2
3
4
5
父类
子类
30
20
10

4 代码块

代码块的执行顺序:静态代码块 –> 构造代码块 –> 构造方法
代码的执行特点:静态代码块只执行一次,构造代码块每次调用构造方法都执行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package jicheng;

class Fu {
  static {
    System.out.println("父类静态代码块");
  }

  {
    System.out.println("父类构造代码块");
  }

  public Fu() {
    System.out.println("父类构造方法");
  }
}

class Zi extends Fu {
  static {
    System.out.println("子类静态代码块");
  }

  {
    System.out.println("子类构造代码块");
  }

  public Zi() {
    System.out.println("子类构造方法");
  }
}

public class test {
  public static void main(String[] args) {
    Zi z = new Zi();
    Zi z2 = new Zi();
  }
}

程序运行结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
父类静态代码块
子类静态代码块
父类构造代码块
父类构造方法
子类构造代码块
子类构造方法
父类构造代码块
父类构造方法
子类构造代码块
子类构造方法

5 继承间的成员关系

  • 成员方法 不同名称:非常简单,一看就知道调用谁
    相同名称:先在子类找,再在父类找

    找不到就报错。

  • 成员变量: 名字不同:非常的简单,一看就知道使用的是谁。
    名字相同:就近原则。

    使用变量的时候,会先找局部范围。
    如果想直接使用成员变量,加关键字:this 即可。
    如果想直接使用父类的成员变量,加关键字:super 即可。

6 注意事项

子类中所有的构造方法默认都会访问父类中空参数的构造方法。为什么呢?因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

相关内容

Buy me a coffee~
Lruihao 支付宝支付宝
Lruihao 微信微信
0%