抽象类

来源:互联网 发布:产品外形设计软件 编辑:程序博客网 时间:2024/05/23 02:18

#银行系统:写用户帐户类(定期/活期)(计算利息方法不同)
帐户类Account包括计算利息,无法用static和final实现

 

#abstract抽象就是用来解决类似问题
abstract代表无须实现或者无法实现
可以修饰类/方法,即抽象类/抽象方法

 

#抽象类有构造,但无法调用(new 抽象类构造错!)

 

#抽象方法:没有方法体。
public abstract 返回类型 方法名(参数列表)[throw XXException];

 

#1.抽象类的引用指向的是非抽象的子类对象(多态)
2.抽象方法的调用其实是调用子类重写以后的方法(非抽象)

 

#为了保证非抽象子类重写抽象方法:
抽象类可以不包括抽象方法,含有抽象方法的类必须是抽象类

 

上例中银行活期/定期存款代码:

//银行账户类

public abstract class Account {
 private double total = 2000;

 public Account() {
 }

 // 抽象方法具有 强制性/规范性
 public abstract double get();// 抽象方法

 public double getTotal() {
  return total;
 }

 public void setTotal(double total) {
  this.total = total;
 }
}
//活期类

public class HAccount extends Account {

 public double get() {
  return this.getTotal() *0.02;
 }

 public static void main(String[] args) {
  Account a = newHAccount();
  System.out.println(a.get());
 }
}

//定期类

public class DAccount extends Account {
 private double i = 0.03;

 public double get() {
  return this.getTotal() *i;
 }

 public static void main(String[] args) {
  Account a = newDAccount();
  System.out.println(a.get());

 }
}