设计一个 JAVA 案例
基本上已经在下面的注释中说明白了自己改下注释的方式和位置。
abstract class Light
{
public static final int RED = 0;
public static final int WHITE = 1;
private String name;
//材料
private String metal;
//亮度
private int bright;
//构造方法
public Light (String name, String metal, int bright)
{
this.name = name;
this.metal = metal;
this.bright = bright;
}
/*
* 记住:没有set方法,因为这些属性一旦确定后就不可以改变。
* 其实这个是java封装的一个特点。有的时候我们无法改变一些确定的值。
* 只能获取他们,甚至都不需要获取。
*/
public String getMetal()
{
return metal;
}
public int getBright()
{
return bright;
}
public String getName()
{
return name;
}
//这个可是抽象方法,代表灯发光的颜色。我规定了两种颜色RED和WHITE
public abstract int getColor();
}
class SunLight extends Light
{
//这里定义了日光灯的材料和亮度
public SunLight()
{
super(日光灯, 日光灯材料, 10);
}
//因为我们不知道灯的颜色,但是我们可以知道具体一类灯的颜色,
//在这里实例化,并且有多种实现。这便是继承与重写。
//当然也是多态的一种体现方式,另外一种体现的方式是重载。
public int getColor()
{
return WHITE;
}
//在这里进行了重载,这也是多态的体现。
public int getColor(int color)
{
return color;
}
}
class RainbowLight extends Light
{
public RainbowLight()
{
super(霓虹灯, 霓虹灯材料, 5);
}
//与日光灯不同的颜色。
public int getColor()
{
return RED;
}
}
public class OOP {
public static void main(String[] args)
{
Light l = new SunLight();
Light l1 = new RainbowLight();
System.out.println(l.getName() + 用 + l.getMetal() +
做成,发出亮度是 + l.getBright() + 的 + l.getColor() + 光。);
System.out.println(l1.getName() + 用 + l1.getMetal() +
做成,发出亮度是 + l1.getBright() + 的 + l1.getColor() + 光。);
//如果我们要调用int getColor(int color) 方法就只可以这样
SunLight sl = new SunLight();
System.out.println(sl.getColor(Light.RED));
}
}