从零开始的Java学习(7)

Episode-7 父类与子类

接下来,我们将继续学习新的内容:父类与子类。

本期学习所需的前置知识

  • 了解继承的概念
  • 知道为什么要引入继承这一概念
  • 了解子类如何使用父类的构造方法

从我们熟悉的Javabean开始

在前面的学习中,我们多次提到Javabean的存在,顾名思义,Javabean就好像是Java的种子,由一个Javabean可以诞生出许许多多令人意想不到的事物。

在这一篇文章中,它将作为接下来大部分类的父类,展现新的风采。

让我们看看这个“老朋友”:

package item;

public class Item{
    private String name;
    private int price;

    public Item(String name, int price){
        this.name = name;
        this.price = price;
    }
    
    public Item(){
    }
    
    public String getName(){
        return name;
    }
    
    public int getPrice(){
        return price;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public void setPrice(int price){
        this.price = price;
    }
}

实际上,Item的属性太少了,一个商品不仅仅有商品名和价格,还有种类,颜色,尺寸等多种属性。
但我们直接在Item里加属性的话,会显得十分杂乱。

于是,我们有必要在Item类的基础上,定义一个子类,在子类中添加更多属性。

子类-苹果

苹果也分多种种类,如红富士、嘎拉、桑萨、红玉、蛇果、金冠、国光、乔纳金、青苹等。
所以,我们可以专门设置一个关于种类的变量,等待用户输入:

package item;

public class Apple extends Item {
    private String name;
    private int price;
    private String type;

    public Apple() {
    }

    public Apple(String name, int price, String type) {
        super(name, price);
        this.type = type;
    }

    public String getType() {
        return this.type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

在上面的代码中,super()表示引用父类的构造方法,在这里,我们传入了“name”和“price”的值,在执行的时候会自动识别父类中对应的构造方法。接着,我们又加入了新定义的属性“type”。

现在,我们可以写一个简单的程序来尝试一下新定义的子类。

import item.Apple;

public class Client{
	public static void main(String[] args){
		Apple app = new Apple("开门红", 10, "红富士");
		System.out.println("商品名:" + app.getName());
		System.out.println("商品价格:" + app.getPrice());
		System.out.println("苹果的类别:" + app.getType());
	}
}

运行这个程序,可以得到如下结果:

Apple

可以发现,在Apple类本身中,虽然我们并没有定义getName()方法和getPrice方法,但我们通过使用extends关键字使得Apple类继承了其父类Item的方法,所以我们才可以直接在子类中调用这些方法。

更多子类-香蕉、西瓜等等

有了前面的经验,现在我们可以定义更多的子类了。通过使用继承,可以提高我们代码的复用性。
其实继承还有一些作用,我们下次再逐一进行分析。

这是一个香蕉类,同样继承了Item类,是Item类的子类:

package item;

public class Banana extends Item {
    private String name;
    private int price;
    private String color;

    public Banana() {
    }

    public Banana(String name, int price, String color) {
        super(name, price);
        this.color = color;
    }

    public String getColor() {
        return this.color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

再比如说,这是一个西瓜类,它同样是Item类的子类:

package item;

public class Watermelon extends Item {
    private String name;
    private int price;
    private String size;

    public Watermelon() {
    }

    public Watermelon(String name, int price, String size) {
        super(name, price);
        this.size = size;
    }

    public String getSize() {
        return this.size;
    }

    public void setSize(String size) {
        this.size = size;
    }
}

在上面的代码中,我们定义了一个香蕉类和西瓜类,而香蕉类里有一个新的变量,颜色(color);西瓜类里也有一个新的变量,尺寸(size),对应的也添加了新的访问器方法和修改器方法。大家可以在Client.java里添加对香蕉和西瓜的引用,通过实践来感知父类与子类继承的关系。

本节的内容是为之后更深入的讲解打基础,请大家一定要好好理解父类与子类的继承关系。

谢谢观看!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值