百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

26. 继承(视频配套代码)

qihemm 2025-07-03 18:12 7 浏览 0 评论

如下代码配套视频:《26. 继承|代码复用,类的层级设计

26.1 类的继承

Animal.java

package com.inheritance.demo1;

/**
 * @author 今日头条:老陈说编程
 * 定义动物类,作为所有动物的基类
 */
public class Animal {
    // 动物名称,子类可以直接访问
    protected String name;
    // 动物编号,子类可以直接访问
    protected int num;

    /**
     * 构造函数,初始化动物的基本信息
     * @param name 动物名称
     * @param num 动物编号
     */
    public Animal(String name, int num) {
        this.name = name;
        this.num = num;
        // 输出动物名称和编号信息
        System.out.println(name+"的编号:"+num);
    }

    /**
     * 定义动物进食行为
     * 具体吃什么由子类实现
     */
    public void eat() {
        System.out.println(this.name+"吃什么?");
    }
}

Dog.java

package com.inheritance.demo1;

/**
 * @author 今日头条:老陈说编程
 * 狗类,继承自动物类
 */
public class Dog extends Animal {
    /**
     * 默认构造函数
     * 调用父类构造函数,设置狗的名称为"狗",编号为123456
     */
    public Dog() {
        super("狗", 123456);
    }

    /**
     * 程序入口点
     * 创建Dog类的实例
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建一个Dog对象,会自动调用父类的构造函数
        Dog dog = new Dog();
        dog.eat();
    }
}

26.2 接口继承

Switchable.java

package com.inheritance.demo2;

/**
 * @author 今日头条:老陈说编程
 * 定义接口:可开关的设备
 */
public interface Switchable {
    // 开启设备的抽象方法
    void turnOn();

    // 关闭设备的抽象方法
    void turnOff();

    // 检查设备是否开启的抽象方法
    boolean isOn();
}

SmartLight.java

package com.inheritance.demo2;

/**
 * @author 今日头条:老陈说编程
 * 智能灯类实现Switchable接口
 */
public class SmartLight implements Switchable {
    // 灯的开关状态
    private boolean isOn;

    @Override
    public void turnOn() {
        isOn = true;
        System.out.println("灯已打开,亮度100%");
    }

    @Override
    public void turnOff() {
        isOn = false;
        System.out.println("灯已关闭");
    }

    @Override
    public boolean isOn() {
        return isOn;
    }
}

SmartAC.java

package com.inheritance.demo2;

/**
 * @author 今日头条:老陈说编程
 * 智能空调类实现Switchable接口
 */
public class SmartAC implements Switchable {
    // 空调的开关状态
    private boolean isOn;

    // 空调的温度设置,默认26度
    private int temperature;

    public SmartAC() {
        this.temperature = 26;
    }

    @Override
    public void turnOn() {
        isOn = true;
        System.out.println("空调已开启,当前温度:" + temperature + "°C");
    }

    @Override
    public void turnOff() {
        isOn = false;
        System.out.println("空调已关闭");
    }

    @Override
    public boolean isOn() {
        return isOn;
    }

    // 空调特有的方法:设置温度
    public void setTemperature(int temp) {
        this.temperature = temp;
        if (isOn) {
            System.out.println("空调温度已调整为:" + temperature + "°C");
        }
    }
}

HomeController.java

package com.inheritance.demo2;

/**
 * @author 今日头条:老陈说编程
 * 家庭控制器类,用于控制各种智能设备
 */
public class HomeController {
    // 控制任意可开关设备的方法
    public void controlDevice(Switchable device, boolean on) {
        if (on) {
            device.turnOn();
        } else {
            device.turnOff();
        }
    }

    // 检查设备状态的方法
    public void checkStatus(Switchable device) {
        System.out.println("设备状态:" + (device.isOn() ? "开启" : "关闭"));
    }
}

Main.java

package com.inheritance.demo2;

/**
 * @author 今日头条:老陈说编程
 * 主类:测试接口和实现类的功能
 */
public class Main {
    public static void main(String[] args) {
        // 创建家庭控制器实例
        HomeController controller = new HomeController();

        // 创建设备实例,使用接口类型引用
        Switchable light = new SmartLight();
        Switchable ac = new SmartAC();

        // 控制灯的开关
        System.out.println("=== 控制灯 ===");
        controller.controlDevice(light, true);
        controller.checkStatus(light);

        // 控制空调的开关和温度
        System.out.println("\n=== 控制空调 ===");
        controller.controlDevice(ac, true);
        ((SmartAC) ac).setTemperature(24); // 向下转型调用空调特有方法
        controller.checkStatus(ac);

        // 关闭所有设备
        System.out.println("\n=== 关闭所有设备 ===");
        controller.controlDevice(light, false);
        controller.controlDevice(ac, false);
    }
}

26.3 抽象类

Shape.java

package com.inheritance.demo3;

/**
 * @author 今日头条:老陈说编程
 * 抽象类:Shape(形状)
 * 定义所有形状的通用属性和行为,提供抽象方法让子类实现具体逻辑
 */
abstract class Shape {
    protected String color;  // 形状颜色

    // 构造方法初始化颜色
    public Shape(String color) {
        this.color = color;
    }

    // 获取颜色
    public String getColor() {
        return color;
    }

    // 抽象方法:计算面积(由子类实现)
    public abstract double calculateArea();

    // 抽象方法:绘制形状(由子类实现)
    public abstract void draw();
}

Circle.java

package com.inheritance.demo3;

/**
 * @author 今日头条:老陈说编程
 * 子类:Circle(圆形)
 * 继承自Shape,实现圆形的具体属性和方法
 */
class Circle extends Shape {
    private double radius;  // 圆半径

    // 构造方法初始化颜色和半径
    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

    // 实现计算圆形面积的方法
    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }

    // 实现绘制圆形的方法
    @Override
    public void draw() {
        System.out.println("绘制一个" + color + "的圆形,半径为" + radius);
    }
}

Rectangle.java

package com.inheritance.demo3;

/**
 * @author 今日头条:老陈说编程
 * 子类:Rectangle(矩形)
 * 继承自Shape,实现矩形的具体属性和方法
 */
class Rectangle extends Shape {
    private double width;   // 矩形宽度
    private double height;  // 矩形高度

    // 构造方法初始化颜色、宽度和高度
    public Rectangle(String color, double width, double height) {
        super(color);
        this.width = width;
        this.height = height;
    }

    // 实现计算矩形面积的方法
    @Override
    public double calculateArea() {
        return width * height;
    }

    // 实现绘制矩形的方法
    @Override
    public void draw() {
        System.out.println("绘制一个" + color + "的矩形,宽度为" + width + ",高度为" + height);
    }
}

Main.java

package com.inheritance.demo3;

/**
 * @author 今日头条:老陈说编程
 * 主类:测试抽象类和子类的功能
 */
public class Main {
    public static void main(String[] args) {
        // 创建圆形对象并测试
        Shape circle = new Circle("红色", 5.0);
        System.out.println("圆形颜色:" + circle.getColor());
        System.out.println("圆形面积:" + circle.calculateArea());
        circle.draw();

        // 创建矩形对象并测试
        Shape rectangle = new Rectangle("蓝色", 4.0, 6.0);
        System.out.println("\n矩形颜色:" + rectangle.getColor());
        System.out.println("矩形面积:" + rectangle.calculateArea());
        rectangle.draw();
    }
}

相关推荐

VLOOKUP的18种高阶用法大公开!99%的人都不知道的神操作!

作为被头条用户催更的Excel课代表,今天带来让HR追着要模板、让老板主动加薪的VLOOKUP终极指南!从基础到高阶一网打尽,文末送36个行业专用模板!一、为什么你的VLOOKUP总报错?血泪大数据...

Vlooup公式,2种模糊查找匹配,1分钟学会

工作中,VLOOKUP公式使用频率是很高的,用来各种查找匹配问题今天我们分享两种模糊查找匹配问题,一种是文本的模糊查找匹配,一种是数字的模糊查找匹配问题1、文本模糊查找匹配使用模拟数据举个例子,原始数...

与vlookup功能相似的函数,照样搞定表格数据查询,简单还实用

在日常表格数据处理工作,说到数据查询,很多小伙伴首先想到的是Vlookup函数,老师的教程中也多次讲到Vlookup函数的用法和实例。其实在Excel中还有其他的数据查询函数公式或技巧,今天我们先来学...

别再折腾VLOOKUP了!DGET逆向查找10秒通关,小白必看

今天要掀翻一个“过气网红”——VLOOKUP!你是不是也经历过这些崩溃瞬间:逆向查找要交换列顺序,复制粘贴到手软!多条件查找要嵌套MATCH,公式长到怀疑人生!别忍了!今天教你用DGET函数一键封...

职场新人必学!VLOOKUP函数10分钟速成指南

正文:"今天来讲解办公人入职期初函数VLOOKUP,这是所有职场人最重要也是最基础的技能。掌握它,90%的数据查找再不用求人!特别献给刚入职场的你——别让Excel成为加班理由。"——...

巧用Vlookup函数揪出“第三者”(vlookup第三个参数是什么)

在一张Excel表格的重复记录中,让你快速列出每种不同物品第2次或第n次出现的记录,你会怎么做?Vlookup函数就有这个本事。举例来说,产品或者物流表格中往往会记录有同一货物的多笔数据(如下图的今日...

分享12个VLOOKUP超经典用法(vlookup通俗易懂)

刚毕业那会,面试的时候经常会被问到会不会用Excel?我就理直气壮地回答:“会啊。”毕竟,简历上可是写着熟练。接着面试官扔出一句“那你会VLOOKUP吗?”我还是会一口咬定:“我会。“其实,我都没用过...

查找匹配别只知道Vlookup,Sumifs也可以!

工作中遇到查找匹配问题的时候,大家第一反应是不是都想到的Vlookup公式呢,有没有小伙伴们给Sumifs一点点机会的呢,有时候Sumifs比Vlookup更好用1、Vlookup公式举个例子,左边是...

Excel函数讲解:VLOOKUP函数,轻松玩转数据查找

常用函数系列教学:VLOOKUP函数讲解(46)。不懂VLOOKUP函数怎么高效查找数据?闲话少叙直接开讲。基本含义:VLOOKUP函数用于在表格按垂直方向(到)上查找返回行数据。如何使用及注意事项?...

CHOOSEROWS+CHOOSECOLS原来是一个超级查找函数组合!

场景一:要在学生名册中,抽查一名学生成绩。公式:=CHOOSEROWS(A1:D5,2)解析:第一参数A1:D5为数据区域,第二参数2表示提取第2行数据。把数据区域改为A2:D5,结合RANDBETW...

数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效

Excel数据查询,相信大家首先会想到vlookup函数。毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大。但是它也有一些不能实现的数据查询。如上图所示,我们需要根据人员的出现次数,提...

「EXCEL进阶」VLOOKUP函数怎么查询一个值返回多个结果

前言:VLOOKUP函数一般一次只能返回一个结果,本例介绍通过辅助列的方法使VLOOKUP函数查询一个值,返回这个值对应的多个结果。使用场景举例:根据表格中同一数值,返回对应值的多个结果。比如这张数据...

WPS查找能手VLOOKUP函数使用方法讲解

各位同学好!今天我们来深度剖析WPS最实用的查找工具——VLOOKUP函数。这个函数能帮你在表格中快速定位并提取所需数据,可以帮你快速核对两批数据差异,还可以合并多个表格的关联信息,甚至可以帮你制作动...

Excel常用10个函数:跨表查找Vlookup,适用于大数据中查找精确值

Hello大家好,我是Office米,今天,我们将和大家一起分享交流,常用的10个函数之一:查找引用函数VLOOKUP。在说VLOOKUP函数之前,我们要先了解,平时Excel日常工作中会遇到哪些问题...

掌握了这个套路,无论用 Excel vlookup 函数查找第几次结果都很轻松

用vlookup查找默认情况下是一对一出结果,如果要一对多查找,就需要用到各种技巧,具体方法我写过非常多了,可以搜索一下历史记录。只要掌握了今天这个套路,无论你想查找第几次重复值,都易如反掌。案例...

取消回复欢迎 发表评论: