2021年02月22日java基础第十八课---继承
一、概念:
继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
看下列代码
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
- 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
由以上代码我们可以看出:关键字extends表明正在构造的新类Student派生于一个已经存在的类Person,已存在的类称为超类或者父类;子类称为子类。我们还可以看出子类可以调用父类的方法,而且子类可以拥有自己的方法,功能比超类更丰富 子类可以调用父类的方法,但是父类不能调用子类的方法)
二、明确方法重载和方法重写
1.方法重载
2.方法覆盖
在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。例如
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
- 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
我们可以看到子类和父类当中都有run方法,而我们实际调用的却是子类自己的run方法,这就是方法的覆盖,子类通过重写和父类一样的方法实现方法的覆盖。
//方法的覆盖
//子类和父类当中都有相同的方法,
//子类通过重写父类方法实现方法的覆盖
public void getRun() {
System.out.println("所有小猫杜能跑。。。。");
}
//一个方法的签名是由方法名称以及参数列表所组成
//方法的重载是指在一个类当中有相同的方法名不同的参数列表
public void getRun(int s) {
System.out.println("所有小猫杜能跑。。。。"+s);
}
public static void main(String[] args) {
Cat cat = new Cat();
cat.getRun();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
三、super关键字
super 关键字有两个用途:一是调用超类的方法,二是调用超类的构造器。调用构造器语句的时候只能作为另一个构造器的第一条语句出现。
四、继承层次
java支持单继承,继承并不限于一个层次。public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
super.run();
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
class XiaoMing extends Student{
}
class XiaoHong extends Student{
}
- 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
Person的继承层次
有道云笔记更精彩哦
文档:第十七课—继承.note
java基础第十八课---继承
一、概念:
继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
看下列代码
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
- 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
由以上代码我们可以看出:关键字extends表明正在构造的新类Student派生于一个已经存在的类Person,已存在的类称为超类或者父类;子类称为子类。我们还可以看出子类可以调用父类的方法,而且子类可以拥有自己的方法,功能比超类更丰富 子类可以调用父类的方法,但是父类不能调用子类的方法)
二、明确方法重载和方法重写
1.方法重载
2.方法覆盖
在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。例如
public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
- 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
我们可以看到子类和父类当中都有run方法,而我们实际调用的却是子类自己的run方法,这就是方法的覆盖,子类通过重写和父类一样的方法实现方法的覆盖。
//方法的覆盖
//子类和父类当中都有相同的方法,
//子类通过重写父类方法实现方法的覆盖
public void getRun() {
System.out.println("所有小猫杜能跑。。。。");
}
//一个方法的签名是由方法名称以及参数列表所组成
//方法的重载是指在一个类当中有相同的方法名不同的参数列表
public void getRun(int s) {
System.out.println("所有小猫杜能跑。。。。"+s);
}
public static void main(String[] args) {
Cat cat = new Cat();
cat.getRun();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
三、super关键字
super 关键字有两个用途:一是调用超类的方法,二是调用超类的构造器。调用构造器语句的时候只能作为另一个构造器的第一条语句出现。
四、继承层次
java支持单继承,继承并不限于一个层次。public class Person {
public void run() {
System.out.println("任何人都可以跑。。。");
}
public static void main(String[] args) {
}
}
class Student extends Person{
public void run() {
super.run();
System.out.println("这个学生在跑。。。");
}
private void eat() {
System.out.println("学生正在吃。。。。");
}
public static void main(String[] args) {
Student student = new Student();
student.run();
student.eat();
}
}
class XiaoMing extends Student{
}
class XiaoHong extends Student{
}
- 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
Person的继承层次
有道云笔记更精彩哦
文档:第十七课—继承.note