一、抽象类概述
类中如果有抽象方法,该类必须定义为抽象类
二、抽象类格式
格式: 权限修饰符 abstract class 类名{};范例: public abstract class Animal {代码体};
三、抽象方法概述
父类需要定义某个方法,但是不知道如何去实现这个方法,具体的功能应该让子类去实现这样的方法就可以定义为抽象方法
四、抽象方法格式
格式: 权限修饰符 abstract 返回值类型 方法名(参数列表); 范例: public abstract void run();// 不能写私有private抽象方法,因为不能被子类进行重写
五、抽象类的特点
*抽象类无法创建对象*有抽象方法,这个类一定是抽象类 (抽象类和抽象方法的关系)*抽象类中不一定有抽象方法*子类继承抽象类*要么重写所有抽象方法*要么子类也必须定义为抽象类 //如:public abstract class Dog extends Animal
六、抽象类的成员特点
●成员变量可以是变量也可以是常量●构造方法有构造方法,但是不能实例化(通过多态来进行实例化)那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化●成员方法可以有抽象方法:限定子类必须完成某些动作(限定子类为抽象类或者子类要进行重写)也可以有非抽象方法:提高代码复用性(是用继承来保证的)
七、抽象类和普通类的区别
*抽象类:拥有所有能力,还有定义抽象方法的能力,不能创建对象*普通类:不能定义抽象方法
八、案例讲解
public abstract class Card {private String id;private double balance;public Card() {}public Card(String id, double balance) {this.id = id;this.balance = balance;}public abstract void pay(double money) ;public String getId() {return id;}public void setId(String id) {this.id = id;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}}
public class GoldenCard extends Card{public GoldenCard() {}public GoldenCard(String id, double balance) {super(id, balance);}@Overridepublic void pay(double money) {System.out.println("支付成功");System.out.println("原件:"+money);//打折价double paymoney=money*0.8;System.out.println("优惠价:"+paymoney);//余额double newBalance=getBalance()-paymoney;System.out.println("余额:"+newBalance);//更新余额为最新的金钱setBalance(newBalance);}}
import java.util.Scanner;public class Test {public static void main(String[] args) {GoldenCard ca=new GoldenCard("vip0001",10000);Scanner rd=new Scanner(System.in);System.out.println("请输入加油的金额:");double a=rd.nextDouble();ca.pay(a);System.out.println("请输入加油的金额:");a=rd.nextDouble();ca.pay(a);}
}
作者:KJ.JK
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习