Java中继承

时间:2025-01-20 22:57:20

一、概述

面向对象编程中,继承是一个比较重要的概念,继承描述的是事物之间的所属关系,是从已有的类中构建出新的类,已有的类称为父类,新的类称为子类,子类具有父类的数据属性和方法,并能扩展新的属性和方法(不能继承私有)。

1、继承的使用

  • 格式:使用 extends 关键字 ==> class 子类 extends 父类 ()
  • 创建 Person 类和 Student 子类:public class Student extends Person {...}

2、继承的优点

  • 提高了代码的复用性,提高了软件的开发效率
  • 让类与类之间产生了联系,提供了多态的前提

3、继承的特点

  • 在Java中,只支持单继承,不支持多继承,一个子类只能有一个直接父类;
  • 父类私有成员,子类不能继承,因为根本看不到;
  • 一个父类可以有多个子类;
  • 支持多层继承,一个类的父类可以再去继承另外的父类;
  • 子类和父类是相对的概念,一个类是某个类父类的同时,也可以是另一个类的子类。

4、继承中成员变量关系

  • 不同变量名子类直接调用;
  • 相同变量名调用时,如果子类有,就不调用父类的变量,如果子类没有,父类有,则调用父类的;
  • 在子类中,要调用父类的成员,使用关键字 super,调用父类方法也是一样,使用super关键字。

二、代码实例

先创建父类

package myExtends;

public abstract class Person {
    String name;
    int age;
    int i = 1;

    public void setName(String name)
    {
         = name;
    }
    public void setAge(int age)
    {
         = age;
    }
    public String getName()
    {
        return name;
    }
    public int getAge()
    {
        return age;
    }
}

再创建子类

package myExtends;

/**
 * 使用extends关键字创建子类并新定义了number变量,定义i进行继承中成员变量的关系进行测试
 */
public class Student extends Person {
    int i = 2;
    int number;

    public void setNumber(int number)
    {
         = number;
    }
    //在子类中能直接使用父类的非私有成员变量
    public void message()
    {
        ("My name is " +  + ",I am " +  + " years old," + " my number is " + );
    }
    public void print()
    {
        (name);
        ();       //在子类中,要调用父类的成员,使用关键字super
    }
}

在中赋值并调用

package myExtends;

public class Main {
    public static void main(String[] args)
    {
        Student stu = new Student();
        (18);
        ("java");
        (32);
        ();
        ();
        ();      //子类有则调用子类的,子类没有则调用父类的
    }
}

实例分析:

  • 在父类Person中定义了非私有变量name、age和测试变量i,子类Student中新创建了number变量并在子类中能够使用父类中的变量
  • 在父类和子类中都有 i 变量,调用时,如果子类有,就不调用父类的变量,如果子类没有,父类有,则调用父类的
  • 在子类中,要调用父类的成员,使用关键字 super,调用父类方法也是一样,使用super关键字