1.抽象类的声明:
1 abstract class Book 2 { 3 String name;//属性 4 int price; 5 public void printName()//普通方法 6 { 7 System.out.println("书名:"+name); 8 } 9 public abstract void printPrice();//抽象方法 10 }
2.抽象类不能直接实例化:
Book book = new Book();//错误的,Book是抽象类
3.抽象方法只需声明,不需实现:
public abstract void printPrice(int price);//抽象方法
4.抽象类的使用:必须有子类。
抽象类的子类必须重写全部的抽象方法后才能被实例化。
1 abstract class Book 2 { 3 String name;//属性 4 int price; 5 String press; 6 public void printName(String name)//普通方法 7 { 8 System.out.print("书名:"+name); 9 } 10 public abstract void printPrice(int price);//抽象方法 11 } 12 class Readers extends Book 13 { 14 public void printPrice(int price) 15 { 16 System.out.println(" 价格:"+price+"元"); 17 } 18 } 19 class Writer extends Book 20 { 21 public void printPrice(int price) 22 { 23 System.out.print(" 价格:"+price+"元"); 24 } 25 public void printPress(String press) 26 { 27 System.out.print(" 出版社:"+press); 28 } 29 } 30 public class T03 31 { 32 public static void main(String[] args) 33 { 34 Readers r = new Readers(); 35 Writer w = new Writer(); 36 r.printName("《基督山伯爵》"); 37 r.printPrice(20); 38 w.printName("《欧亨利短篇小说集》"); 39 w.printPrice(30); 40 w.printPress("新华出版社"); 41 } 42 }
输出结果:
书名:《基督山伯爵》 价格:20元
书名:《欧亨利短篇小说集》 价格:30元 出版社:新华出版社
5.外部抽象类不能用static声明,但内部抽象类可以。
1 abstract class Book 2 { 3 public abstract void print(); 4 static abstract class Name 5 { 6 public abstract void getName(); 7 } 8 } 9 class Readers extends Book.Name 10 { 11 public void getName() 12 { 13 System.out.println("《茶花女》"); 14 } 15 } 16 public class T03 17 { 18 public static void main(String[] args) 19 { 20 Book.Name name = new Readers(); 21 name.getName(); 22 } 23 }
6.抽象类应用——模板设计模式。
举一个例子:
现在有三类事物丈夫、妻子、儿子,这三类事物可以完成的功能如下。
丈夫:吃饭、睡觉、工作、锻炼。
妻子:吃饭、锻炼、睡觉。
儿子:吃饭、睡觉、学习。
参考文献:《Java从入门到精通》第2版。
时间: 2024-11-11 09:32:28