儿子如何继承父亲的遗产

本文通过一个生动的父子比喻介绍了Java中的继承概念,子类可以继承父类的成员方法和变量。然后转向动物世界,以Animal、Dog和Cat为例,展示了如何利用继承构建类层次结构,并通过重写实现多态。多态允许父类引用调用子类特有的方法,前提是子类必须重写父类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

儿子的产生

先当儿子后当爹, 千古不变的真理啊. 爹帮儿子打下了大好河山, 儿子只要继承就是了.

关键字"继承" java中的子类可以继承父类的成员方法, 成员变量.

class Father {
    public String name = "帅比";
    public int age = 19;
    public void eat() {
        System.out.println("帅哥就得吃吃吃");
    }
}

// 儿子继承
class Son extends Father {

}
public class Home {
    public void print() {
// 实例化儿子
        Son son = new Son();
        System.out.println(son.age);
        System.out.println(son.name);
        son.eat();
    }
    public static void main(String[] args) {
        Home home = new Home();
        home.print();
    }
}

注意看, 这里的儿子啥事没干, 和他爹一个姓,一个名, 还特么都是19岁, 还都会吃饭, 天才!爱因斯坦都得给他颁奖

eat() 这个父类方法就是子类继承的, 也可以调用.

从这一个例子我们可以得到, 子类可以继承父类的成员变量和成员方法.

但是实际上和现实中这样是错误的, 哪有爸爸和儿子都是一个名字, 年龄还都一样. 

一般在实际生活中我们定义一个大类, 然后小类再从这个大类中吸取自己想要的变量, 方法, 并且给自己加点料, 添点味. 我们先让这两位父子退出历史舞台, 我们放眼于自然动物世界.

Animal & Dog & cat

Animal Dog Cat 这三个单词, 可以产生这样的联系, Dog和Cat可以归于Animal的旗下, 这与我们的继承不谋而合, 但是这次不一样, 如何描述一个动物. 第一步说出他的名字, 年龄几岁, 他的生活习性怎么样. 

名字就是Animal这个类的成员变量, 年龄也是这个类的成员变量, 生活习性就是这个类的成员方法了.  我们来看代码

class Animal {
    // 这是动物的两个成员变量
    public String name;
    public int age;

    // 下面是动物的两个属性
    public void eat() {
        System.out.println(name + "正在吃饭");
    }

    public void sleep() {
        System.out.println(name + "正在睡觉");
    }
}


// 动物只是一个统称, 我们需要更加细节的东西, 比如说 小猫,小狗
// 新建小猫小狗, 因为小猫小狗都是属于动物 所以可以用动物的很多东西
// 比如说 name age 成员变量 还有 eat() sleep() 成员方法

class Dog extends Animal {
    // 狗有不一样的习性, 狗会叫
    public void bark() {
        System.out.println(name + "汪汪汪");
    }
    
    public void eat() {
        System.out.println(name + "狗在吃狗粮");
    }
}


class Cat extends Animal {
    // 猫也有不一样的习性, 猫会猫叫
    public void miao() {
        System.out.println(name + "喵喵喵");
    }
    
    public void eat() {
        System.out.println(name + "猫在吃猫粮");
    }

}

public class World {
    public static void main(String[] args) {
        // 调用父类的方法
        Animal dog = new Dog();
        dog.sleep();
        // 注意
        dog.eat();
        Animal cat = new Cat();
        cat.sleep();
        cat.eat();
        // 
    }
}

我们发现不同的类不同的eat方法所产生的状态都不一样, 这可以称作是多态, 多态是需要重写的, 多态只会发生在父类和子类之间, 那么重写也是这样, 我们发现, 重写一般会有@override这个表示符存在, 但是在这里却没有, 那么说明这个override只是一个批注, 以显式指定

注意重写也是有限制的, 被static修饰, private 修饰这些方法就不能被重写.

多态

多态我把它理解成一种强制转换, 将父类的类强制转换成子类, 可以用上子类的方法和成员变量.发生多态的条件: 

1. 必须在继承体系下

2. 子类必须要对父类中方法进行重写

3. 通过父类的引用调用重写的方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值