编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2025-06-24 17:30:46 开源技术 3 ℃ 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();
    }
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表