抽象类"/>
继承与抽象类
需求:创建类描述黄瓜、茄子、香蕉、榴莲、黄鳝、带鱼;它们各自拥有的属性和功能如下:(后面带小括号的是功能)
黄瓜:颜色;重量;可以吃(){黄瓜炒蛋};可以使用(){做面膜}
茄子:颜色;重量;可以吃(){油焖茄子};可以使用(){做中药}
香蕉:颜色;重zhi量;可以吃(){脆皮香蕉};可以使用(){做香蕉面膜}
榴莲:颜色;重量;可以吃(){榴莲酥};可以使用(){砸人}
黄鳝:重量;品种;价格;可以吃(){鳝鱼粥};
带鱼:重量;品种;价格;可以吃(){糖醋带鱼};
测试类:
public class Test {public static void main(String[] args) {Banana b = new Banana();b.setColor("黄色");b.setWeight(1);System.out.println(b.getColor() + ", " + b.getWeight());b.eat();b.use();System.out.println("==========================================================================");Eggplant e = new Eggplant();e.setColor("紫色");e.setWeight(2);System.out.println(e.getColor() + ", " + e.getWeight());e.eat();e.use();System.out.println("==========================================================================");Cucumber c = new Cucumber();c.setColor("绿色");c.setWeight(1);System.out.println(c.getColor() + ", " + c.getWeight());c.eat();c.use();System.out.println("==========================================================================");Durian d = new Durian();d.setColor("黄色");d.setWeight(5);System.out.println(d.getColor() + ", " + d.getWeight());d.eat();d.use();System.out.println("==========================================================================");RiceField_Eel r = new RiceField_Eel();r.setWeight(2);r.setPrice(30);r.setVarieties("青花黄鳝");System.out.println(r.getVarieties() + ", " + r.getWeight() + ", " + r.getPrice());r.eat();System.out.println("==========================================================================");Hairtail h = new Hairtail();h.setVarieties("沙带鱼");h.setPrice(60);h.setWeight(3);System.out.println(h.getVarieties() + ", " + h.getPrice() + " ," + h.getWeight());h.eat();}
}
食物类:
public abstract class Food {private double weight;public abstract void eat();public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}
}
植物类:
public abstract class Botany extends Food{//需求:创建类描述黄瓜、茄子、香蕉、榴莲、黄鳝、带鱼;它们各自拥有的属性和功能如下:(后面带小括号的是功能)private String color;public String getColor() {return color;}public void setColor(String color) {this.color = color;}public abstract void use();
}
动物类:
public abstract class Animal extends Food{private String varieties;private double price;public String getVarieties() {return varieties;}public void setVarieties(String varieties) {this.varieties = varieties;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}}
香蕉类:
public class Banana extends Botany{//香蕉:颜色;重量;可以吃(){脆皮香蕉};可以使用(){做香蕉面膜}@Overridepublic void use() {System.out.println("做香蕉面膜");}@Overridepublic void eat() {System.out.println("脆皮香蕉");}
}
黄瓜类:
public class Cucumber extends Botany{//黄瓜:颜色;重量;可以吃(){黄瓜炒蛋};可以使用(){做面膜}@Overridepublic void use() {System.out.println("zuo面膜");}@Overridepublic void eat() {System.out.println("黄瓜变蛋");}
}
榴莲类:
public class Durian extends Botany{//榴莲:颜色;重量;可以吃(){榴莲酥};可以使用(){砸人}@Overridepublic void use() {System.out.println("砸人");}@Overridepublic void eat() {System.out.println("榴莲酥");}
}
茄子类:
public class Eggplant extends Botany{//茄子:颜色;重量;可以吃(){油焖茄子};可以使用(){做中药}@Overridepublic void use() {System.out.println("做中药");}@Overridepublic void eat() {System.out.println("油焖茄子");}
}
带鱼类:
public class Hairtail extends Animal{//带鱼:重量;品种;价格;可以吃(){糖醋带鱼};@Overridepublic void eat() {System.out.println("糖醋带鱼");}
}
黄鳝类:
public class RiceField_Eel extends Animal{//黄鳝:重量;品种;价格;可以吃(){鳝鱼粥};@Overridepublic void eat() {System.out.println("鳝鱼粥");}
}
继承:extends关键字
格式:public class 子类名 extends 父类名
super关键字代表类了父类对象的引用
格式:super.();
abstract关键字用来修饰抽象类,抽象方法。
格式:public abstract class 类名{}
public abstract 返回值类型 方法名();
注:抽象类不能创建对象
抽象类可以有构造方法
抽象类中可以没有抽象方法,但有抽象方法的类一定是抽象类
抽象类的子类必须重写抽象类中的所有抽象方法,除非这个子类也是抽象类
final 关键字
修饰类
public final class 类命(){}
修饰方法
public final 返回值类型 方法名(){}
修饰局部变量
final 数据类型 变量名 = 值;
(如果数据类型是引用数据类型则不能指向另一个对象)
修饰成员变量
private final 数据类型 变量名;
被 final 修饰的类不能被其他类继承
被 final 修饰的方法不能被子类重写
被 final 修饰的变量被称为常量,不能重新赋值,如果变量是引用类型,则不能指向另一个对象。
更多推荐
继承与抽象类
发布评论