package com.gch.d8_abstract_attention;
public class Test {
public static void main(String[] args) {
// 目标:理解抽象类的特征和注意事项
// Animal a = new Animal(); 直接报错,抽象类不能创建对象
}
}
abstract class Cat extends Animal{
@Override
public void run() {
}
}
// 抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
abstract class Animal{
public abstract void run();
public abstract void eat();
}
final和abstract是互斥关系,不能同时出现。
abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承。
abstract修饰的抽象方法定义通用功能让子类重写,final定义的方法不能被重写。
3.案例
package com.gch.d7_abstract_test;
public abstract class Card {
private String name; // 主人名称
private double money; // 余额
/** 定义一个支付方法,表示卡片可以支付
* @param spendMoney:消费的金额
*/
public abstract void pay(double spendMoney);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
package com.gch.d7_abstract_test;
public class Test {
public static void main(String[] args) {
// 目标:学习一下抽象类的基本使用:做父类,被继承,重写抽象方法
GoldCard g = new GoldCard();
g.setMoney(8999);
g.setName("小李");
g.pay(280);
}
}