继承

Java是一门优秀的语言,相比C和C++具有更好的可读性。同时Java具有丰富的API,以及面向对象编程思想…对不起跑题了..

这里主要还是介绍面向对象的三大特性之一:继承

概述

  • 继承是让java中的类与类之间产生父子关系,可以让子类直接使用父类非私有的内容;

  • 继承使用extends关键字表示;

应用场景

凡是多个事物中有共性的内容的时候,都可以使用父类抽取出来;

语法

1
2
3
public class  子类 extends 父类{
//直接使用父类非私有的内容;
}

创建对象的特点

  • 创建子类对象的时候.里面一定会包含父类的对象(super表示);

继承的好处

  • 提升了代码的复用性;

继承的注意事项

和Python最大的区别就是Python中一个类能够单继承,也能够多继承,但是Java为了保证安全性,只能使用单继承,但是能够多层继承。

  1. 类与类之间只能单继承,不能多继承;
  2. 可以多层继承;(继承具有传递性)
  3. 所有的类都直接或间接的继承了 Object 类;

CodeDemo

Fu类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.xlkh.demo05_extends;

public class Fu {
// public 权限的内容
public int i;
public void print1(){
System.out.println("fu类的print方法");
}
// private 权限的内容
private int j;
private void print2(){
System.out.println("fu类的print2方法");
}
}

Zi类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.xlkh.demo05_extends;

public class Zi extends Fu{
private int k;
public void print3(){
System.out.println(i);
// System.out.println(j); // 报错因为父类私有了
System.out.println(k); //可以用,自己类中的私有变量
print1(); // 可以使用父类public的内容
// print2(); // 报错,因为父类私有
// print3(); // 编译通过,但是是死递归,也一定会由于不停压栈导致内存溢出
}
}

Test类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.xlkh.demo05_extends;

public class TestExtends {
public static void main(String[] args) {
// 子类对象实际上是父类和子类共同创建出来的
// 创建子类对象默认会继承父类的非私有成员变量和成员方法
Zi z = new Zi();
// 调用父类的print1方法
z.print1();
// 调用子类的print3方法
z.print3();

}
}