您的位置:首页 > 编程语言 > Java开发

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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息