什么是继承,Java继承快速入门
在 Java 开发中,不少情况下会遇到类的继承,下面我们就来了解一下什么是类的继承。
假设定义了一个 Cat 类,那么在这个类下还可以继续创建一个类,这个类会继承 Cat 类的所有特点,同时拥有一些自己独特的特点,我们将这个类称为子类,原本的 Cat 类可以被称为父类。
我们根据以往的做法,在一个新的文件中创建一个新的类,名称为 SmallCat,中文名为“小猫”,我们可以形象地把它理解为 Cat 类的儿子。Java 的继承由关键字 extends 来实现,继承的基本语法如下:
下面我们来看一个例子,新建一个类 SmallCat,创建完后的程序编辑窗口如下:
编写子类的代码如下:
当然,也可以不局限于扩展父类的方法,直接改写父类的方法进行方法的重载。重新编写子类的代码如下:
学到这里,读者应该已经了解到继承是怎么使用的了。
假设定义了一个 Cat 类,那么在这个类下还可以继续创建一个类,这个类会继承 Cat 类的所有特点,同时拥有一些自己独特的特点,我们将这个类称为子类,原本的 Cat 类可以被称为父类。
我们根据以往的做法,在一个新的文件中创建一个新的类,名称为 SmallCat,中文名为“小猫”,我们可以形象地把它理解为 Cat 类的儿子。Java 的继承由关键字 extends 来实现,继承的基本语法如下:
修饰符 class 类名 extends 父类名 { //子类中需要定义的属性和方法 }Java 的继承有如下特点:
- 一个父类可以有很多子类,但一个子类只有一个父类;
- Java 中只支持单继承,即一个只能从一个父类那里继承,而不能从多个父类那里继承。不过,Java 可以通过接口间接实现多重继承;
- 子类拥有父类所有的属性和方法;
- 子类可以作为父类的扩展,增添新的属性和方法。
下面我们来看一个例子,新建一个类 SmallCat,创建完后的程序编辑窗口如下:
public class SmallCat { }我们需要在这个类的后面写上继承父类的语法,写好的继承如下:
public class SmallCat extends Cat{ }程序没有任何报错,说明我们写对了。由于这个类已经继承了父类 Cat 的所有特点,其中 Cat 类是我们之前已经编写好的类,而不是新建的。这里同时对新创建的子类中的内容进行补充,在子类中添加 neweat() 方法,这个方法和父类中的任何方法都不相同,因此这个方法可以视为对父类中方法的补充和扩展。
编写子类的代码如下:
public class SmallCat extends Cat{ public void neweat() { System.out.println("小猫的儿子小猫开始吃饭了\n"); } }然后改写主类中的代码,实例化属于 SmallCat 的对象 cat2:
public class Main { public static void main(String[] args) { System.out.println("这是我们主类中的主方法,程序先从这里开始执行\n"); Cat cat1=new Cat();//这里创建一个Cat类中的对象cat1 cat1.name="小花"; //给cat1命名 cat1.age=12; //给cat1添加年龄 cat1.color="蓝色"; //给cat1添加毛色 cat1.saycolor(); //执行刚刚在Cat类中所定义的方法 cat1.sayage(); cat1.eat(); //开始创建小猫的第二个对象,由子类SmallCat进行实例化 SmallCat cat2=new SmallCat(); cat2.name="小花的儿子";//由于子类继承了父类所有的属性和方法,因此我们也可以对父类的属性和方法进行改写 cat2.age=4; cat2.color="蓝色"; cat2.saycolor();//执行刚刚在Cat类中所定义的方法 cat2.sayage(); cat2.eat(); cat2.neweat(); //子类中额外的方法 } }输出结果为:
小猫小花的颜色是蓝色
小猫小花的年龄是12
小猫小花正在吃东西
小猫小花的儿子的颜色是蓝色
小猫小花的儿子的年龄是4
小猫小花的儿子正在吃东西
小猫的儿子小猫开始吃饭了
当然,也可以不局限于扩展父类的方法,直接改写父类的方法进行方法的重载。重新编写子类的代码如下:
public class SmallCat extends Cat{ public void eat() { System.out.println("小猫吃肉肉"); } public void neweat() { System.out.println("小猫的儿子小猫开始吃饭了\n"); } }我们重新写了一个 eat() 方法,只是这个方法和父类的 eat() 方法中的内容有所不同,方法重写也被称为方法覆盖。由于我们已经把父类中的方法进行了改写,因此凡是由子类所创建出来的对象,这个对象一旦调用 eat() 方法,只会调用已经被我们所重写的子类中的 eat() 方法,而不会执行父类中的 eat() 方法。我们不改动主类中的代码,单击“运行”之后,来看看运行的结果:
小猫小花的颜色是蓝色
小猫小花的年龄是12
小猫小花正在吃东西
小猫小花的儿子的颜色是蓝色
小猫小花的儿子的年龄是4
小猫吃肉肉
小猫的儿子小猫开始吃饭了
学到这里,读者应该已经了解到继承是怎么使用的了。