网站首页 > 开源技术 正文
如下代码配套视频:《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();
}
}
猜你喜欢
- 2025-06-24 小升初六年级数学系统总复习 平面图形的面积与周长(八)
- 2025-06-24 球体表面积公式推导(2种方法) - 微积分应用
- 2025-06-24 磁场区域最小面积的求解方法(磁场最小面积叶形)
- 2025-06-24 零基础构建几何思维:基础图形→平面世界→立体空间→解题技巧
- 2025-06-24 圆的内接四边形面积公式-婆罗摩笈多公式
- 2025-06-24 圆面积公式的推导 免费视频讲解(圆面积公式的推导过程动画)
- 2025-06-24 高一数学期末考试:弧长面积公式,三角形外接圆,三角函数...
- 2025-06-24 30天学会Python编程:6. Python函数编程
- 2025-06-24 C语言常量使用(c语言中的常量使用要求是什么)
- 2025-06-24 六年级下册圆的面积的解题技巧(六年级圆的面积公式例题)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)