花几千上万学习Java,真没必要!(二十一)

super关键字:

测试代码1:

创建一个Animal类:

package extendtest.com;
public class Animal {  
    String name;  
  
    // 父类的构造方法  
    public Animal(String name) {  
        this.name = name;  
    }  
  
    // 父类的一个方法  
    public void eat() {  
        System.out.println(name + " eats food.");  
    }  
}

 创建一个Dog类:

package extendtest.com;
public class Dog extends Animal {  
    // Dog类特有的方法  
    public void bark() {  
        System.out.println(name + " barks.");  
    }  
  
    // Dog类可以调用父类的构造方法(显式调用)  
    // 在子类的构造方法中,可以通过super关键字调用父类的构造方法  
    // 如果不显式调用,则默认调用父类的无参构造方法 
    public Dog(String name) {  
        super(name); // 显式调用父类的构造方法  
    }  
  
    // 重写父类的方法  
    @Override  
    public void eat() {  
        // 调用父类的eat方法 
        // super.eat();  
        System.out.println(name + " eats dog food.");  
    }  
}

在主方法中测试:

package extendtest.com;
public class InheritanceDemo {  
    public static void main(String[] args) {  
        // 创建Dog对象  
        Dog myDog = new Dog("Buddy");  
  
        // 调用Dog类继承自Animal类的方法  
        myDog.eat(); 
  
        // 调用Dog类特有的方法  
        myDog.bark(); 
    }  
}

运行结果如下:

测试代码2:

创建一个化妆品类:

package extendtest.com;
import java.time.LocalDate;

//化妆品类  
public class Cosmetic {  
 String brand; // 品牌  
 String type;  // 类型  
 // 假设一个简单的过期日期
 LocalDate expirationDate; 

 // 构造方法  
 public Cosmetic(String brand, String type, LocalDate expirationDate) {  
     this.brand = brand;  
     this.type = type;  
     this.expirationDate = expirationDate;  
 }  

 // 显示化妆品信息的方法  
 public void displayInfo() {  
     System.out.println("Brand: " + brand + ", Type: " + type);  

 }  

 // 检查是否过期的方法
 public boolean isExpired() {  
     LocalDate today = LocalDate.now();  
     return today.isAfter(expirationDate);  
 }  
}  

创建一个口红类:

package extendtest.com;
import java.time.LocalDate;

//口红类,继承自化妆品类  
public class Lipstick extends Cosmetic {  
 String shade;     // 色号  
 String finish;    // 质地  

 // 构造方法  
 public Lipstick(String brand, String type, String shade, String finish, LocalDate expirationDate) {  
     super(brand, type, expirationDate); // 调用父类的构造方法  
     this.shade = shade;  
     this.finish = finish;  
 }  

 // 重写displayInfo方法以包含更多信息  
 @Override  
 public void displayInfo() {  
     super.displayInfo(); // 调用父类的displayInfo方法  
     System.out.println("Shade: " + shade + ", Finish: " + finish);  
 }  

 // 口红特有的方法:涂抹口红  
 public void apply() {  
     if (!isExpired()) {  
         System.out.println("Applying " + brand + " " + shade + " lipstick...");  
     } else {  
         System.out.println("This lipstick is expired and should not be applied!");  
     }  
 }  

 // 检查是否过期的方法

 @Override  
 public boolean isExpired() {  
     // 直接调用基类的实现,但也可以添加额外的逻辑  
     return super.isExpired();  
 }  
}  

在主方法中测试:

package extendtest.com;

import java.time.LocalDate;

//测试类  
public class CosmeticDemo {  
 public static void main(String[] args) {  
     LocalDate today = LocalDate.now();  
     LocalDate expirationDate = today.minusMonths(6); // 假设口红已经过期6个月  

     // 创建Lipstick对象  
     Lipstick myLipstick = new Lipstick("MAC", "Matte Lipstick", "Velvet Teddy", "Matte", expirationDate);  

     // 检查口红是否过期  
     if (myLipstick.isExpired()) {  
         System.out.println(myLipstick.brand + " " + myLipstick.shade + " lipstick is expired.");  
     } else {  
         System.out.println(myLipstick.brand + " " + myLipstick.shade + " lipstick is not expired.");  
     }  

     // 尝试涂抹口红
     myLipstick.apply();  
 }  
}

运行结果如下:

测试代码3:

创建一个车辆类:

package extendtest.com;
public class Vehicle {  
    String brand; // 品牌  
    int wheels;   // 轮子数量  
  
    // 构造方法  
    public Vehicle(String brand, int wheels) {  
        this.brand = brand;  
        this.wheels = wheels;  
    }  
  
    // 显示车辆信息的方法  
    public void displayInfo() {  
        System.out.println("Brand: " + brand + ", Wheels: " + wheels);  
    }  
}

创建一个汽车类:

package extendtest.com;
public class Car extends Vehicle {  
    String model; // 型号  
  
    // 构造方法,同时调用父类的构造方法  
    public Car(String brand, int wheels, String model) {  
        super(brand, wheels); // 调用父类的构造方法  
        this.model = model;  
    }  
  
    // 重写displayInfo方法以包含更多信息  
    @Override  
    public void displayInfo() {  
        super.displayInfo(); // 调用父类的displayInfo方法  
        System.out.println("Model: " + model);  
    }  
  
    // 汽车特有的方法,比如启动  
    public void startEngine() {  
        System.out.println("Engine started.");  
    }  
}

在主方法中测试:

package extendtest.com;

public class InheritanceCarTest {
	public static void main(String[] args) {
		// 创建Car对象
		Car myCar = new Car("Toyota", 4, "Corolla");

		// 调用重写后的displayInfo方法
		myCar.displayInfo();
		// 调用Car类特有的方法
		myCar.startEngine();
	}
}

运行结果如下:

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值