标签:
利用多态性
1 package Sep16; 2 3 public class AbstractCaseDemo1 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Abstract a=new BAbstract(); 11 a.print(); 12 } 13 14 } 15 abstract class Abstract{ 16 public abstract void print(); 17 } 18 class BAbstract extends Abstract{ 19 public void print(){ 20 System.out.println("Hello Word!!!"); 21 } 22 }
就是先用抽象类设计一张空白的模板,具体不同之处用子类实现。
1 package Sep16; 2 3 public class AbstractCaseDemo2 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Person student=new Students("Bob",21,89f); 11 Person worker=new Workers("搬砖哥",22,9999); 12 student.say(); 13 worker.say(); 14 } 15 16 } 17 abstract class Person{ 18 private String name; 19 private int age; 20 public Person(String name, int age) { 21 super(); 22 this.name = name; 23 this.age = age; 24 } 25 public String getName() { 26 return name; 27 } 28 public int getAge() { 29 return age; 30 } 31 public void say(){ 32 System.out.println(this.getContent());//说话的功能,Person类的方法 33 34 } 35 public abstract String getContent();//说话的具体内容,根据不同的人,有不同的定义 36 } 37 class Students extends Person{ 38 private float score; 39 public Students(String name, int age, float score) { 40 super(name, age); 41 this.score = score; 42 } 43 public String getContent(){ 44 return "学生信息:姓名:"+super.getName()+";年龄:"+super.getAge()+",成绩:"+this.score; 45 } 46 } 47 class Workers extends Person{ 48 private float salary; 49 public Workers(String name, int age, float salary) { 50 super(name, age); 51 this.salary = salary; 52 } 53 public String getContent(){ 54 return "工人信息:姓名:"+super.getName()+";年龄:"+super.getAge()+",工资:"+this.salary; 55 } 56 }
学生信息:姓名:Bob;年龄:21,成绩:89.0 工人信息:姓名:搬砖哥;年龄:22,工资:9999.0
package Sep16; public class AbstractCsseDemo03 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Computer.plugin(new Flash()); System.out.println("---------------------"); Computer.plugin(new Print()); } } interface USB{//定义USB标准 public void start(); public void stop(); } //定义实现USB接口的U盘类 class Flash implements USB{ public void start(){ System.out.println("U盘开始工作!"); } public void stop() { // TODO Auto-generated method stub System.out.println("U盘停止工作!"); } } //定义实现USB接口的打印机类 class Print implements USB{ public void start(){ System.out.println("打印机开始工作!"); } public void stop() { // TODO Auto-generated method stub System.out.println("打印机停止工作!"); } } class Computer{ public static void plugin(USB usb){//实现了USB接口的类都可以传递过来 usb.start(); System.out.println("======设备工作中====="); usb.stop(); } }
U盘开始工作! ======设备工作中===== U盘停止工作! --------------------- 打印机开始工作! ======设备工作中===== 打印机停止工作!
类似于Java的JVM虚拟机,采用Factory类的形式处理主函数与子类之间的关系。
标签:
原文地址:http://www.cnblogs.com/BoscoGuo/p/5877541.html