JAVA学习笔记(十四)-经典多态实例
2015-03-24 10:10
411 查看
多态的实现
import java.util.Scanner; /* * 面向对象:封装、继承、多态 多态,即一个A类型的变量既可以指向A类型的对象,又可以指向他子类的对象。其实 在现实生活中就能找到很多运用多态关系的原型,例如一个父亲F,他有两个孩子A和 B,那么F在某些时候可以代表A和B做一些事情,因为父亲对孩子有监护权和抚养权。这里F既可以代表A又可以代表B,因此F具有一定的多态性。 */ public class Test01 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("你想买啥房子(1.楼房 2.别墅):"); int choice = input.nextInt(); House house = null; if (choice == 1) { house = new Building("金山花苑", 120, 80, "栖霞区墨香北路", 3); } else if (choice == 2) { house=new Villa("紫金名城", 600, 300, "紫金山", 2); } else { System.out.println("你到底想买啥玩意。。。"); return; } house.buy(); } }
房屋类House
/* * 房屋类House */ abstract class House { // 属性 private String name;// 名称 private double price;// 价格 private double area;// 面积 private String location;// 位置 public House() { } public House(String name, double price, double area, String location) { super(); this.name = name; this.price = price; this.area = area; this.location = location; } public String getName() { return name; } public double getPrice() { return price; } public double getArea() { return area; } public String getLocation() { return location; } // 购买房屋 public abstract void buy(); }
楼房类Building
/* * 楼房类Building,继承自House */ class Building extends House { private int floor;// 楼层 // 构造方法初始化属性 public Building(String name, double price, double area, String location, int floor) { super(name, price, area, location);// 调用父类构造方法,初始化属性 this.floor = floor; } public int getFloor() { return floor; } public void setFloor(int floor) { this.floor = floor; } // 重写buy方法 @Override public void buy() { System.out.println("俺想买楼房。。。。。"); System.out.println("名称:" + getName()); System.out.println("价格:" + getPrice()); System.out.println("面积:" + getArea()); System.out.println("位置:" + getLocation()); System.out.println("楼层:" + getFloor()); } }
别墅类Villa
/* * 别墅类Villa,继承自House */ class Villa extends House { private int gardenNum;// 独立花园数量 public Villa(String name, double price, double area, String location, int gardenNum) { super(name, price, area, location); this.gardenNum = gardenNum; } public int getGardenNum() { return gardenNum; } public void setGardenNum(int gardenNum) { this.gardenNum = gardenNum; } // 重写buy方法 @Override public void buy() { System.out.println("俺想买别墅。。。。。"); System.out.println("名称:" + getName()); System.out.println("价格:" + getPrice()); System.out.println("面积:" + getArea()); System.out.println("位置:" + getLocation()); System.out.println("花园数量:" + getGardenNum()); } }
相关文章推荐
- JAVA学习笔记(五十三)- 经典三层架构实例
- java学习笔记4:对象的初始化顺序(官方实例)
- java SSL安全socket的通讯实例-java学习笔记(4)
- 转 java学习笔记(必看经典)
- Java学习笔记(十四)
- [学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容
- JAVA多线程学习初步经典实例
- Java_SE_学习笔记_①——Java多态——向上转型的意义
- 多态Object类toString方法学习笔记ObjectDemo.java
- java核心技术学习笔记7---继承与多态
- Java Socket套接字应用实例-java学习笔记(1)
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解
- Java学习笔记(必看经典)
- Javascript教程,javascript入门,javascript学习笔记(经典实例)
- java 数字证书信息的获取实例-java学习笔记(2)
- objective-c学习笔记第六章《objective-c 多态,动态类型,动态绑定与java中的区别》
- java学习笔记十二——多态
- java 设计模式学习笔记十四 template模版模式
- 黑马程序员:java学习笔记-接口和多态
- Java学习笔记(必看经典)