文章目录
- 💨更多相关知识👇
-
- 一、抽象类概述
- 二、抽象类格式
- 三、抽象方法概述
- 四、 抽象方法格式
- 五、抽象类的特点
- 六、抽象类的成员特点
- 七、抽象类和普通类的区别
- 八、案例
-
- ⭐代码演示
- 作者:KJ.JK
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
欢迎大家点赞👍收藏💖评论💬关注🔒
💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者
💨更多相关知识👇
💖JavaEE中的面向对象特征之封装
💖ArrayList集合中的常用成员方法
💖Java中String的split切割字符串方法详解
💖String中的replace的四个方法
💖JavaEE中的Stream流的常用方法
💖JavaEE中的Stream流知识点使用,精华总结,一文直接上手
💖JavaWeb中的过滤器(Filter)和监听器(Listener)区别
💖JavaEE中史上最全String类入门介绍文章,学习StringAPI这一篇即可
一、抽象类概述
类中如果有抽象方法,该类必须定义为抽象类
二、抽象类格式
格式: 权限修饰符 abstract class 类名{};
范例: public abstract class Animal {
代码体
};
三、抽象方法概述
父类需要定义某个方法,但是不知道如何去实现这个方法,
具体的功能应该让子类去实现这样的方法就可以定义为抽象方法
四、 抽象方法格式
格式: 权限修饰符 abstract 返回值类型 方法名(参数列表);
范例: public abstract void run();
// 不能写私有private抽象方法,因为不能被子类进行重写
抽象方法: 默认都是 public abstract 修饰的,可以省略不写 // void connect();
//public void aMethod(); 省略abstract
//void aMethod(); 省略 public abstract
🔥系列热门专栏🔥:
⚡《JavaEE进阶序列 | 从小白到工程师》系列文章⚡
⚡《JavaEE项目实战》系列文章⚡
⚡《JavaSwing项目合集》系列文章⚡
⚡《数据分析中的pandas》系列文章⚡
五、抽象类的特点
* 抽象类无法创建对象
* 有抽象方法,这个类一定是抽象类 (抽象类和抽象方法的关系)
* 抽象类中不一定有抽象方法
* 子类继承抽象类
* 要么重写所有抽象方法
* 要么子类也必须定义为抽象类 //如: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);
}
@Override
public 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);
}
}
//测试类
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,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
相关文章
暂无评论...