开闭原则
对修改关闭,对拓展开放。说白了,就是能可添加功能,但是不支持修改
package com.company;
import javax.swing.text.DefaultEditorKit;
abstract class ZhuTi{
abstract double getArea();
abstract double getVolume();
}
class Cylinder extends ZhuTi {
double r;
double height;
public Cylinder(double r, double height) {
this.r = r;
this.height = height;
}
@Override
double getArea() {
return Math.PI*r*r;
}
@Override
double getVolume() {
return getArea()*height;
}
}
class Chang extends ZhuTi{
double a;
double height;
double b;
public Chang(double a, double b, double height) {
this.a = a;
this.height = height;
this.b = b;
}
@Override
double getArea() {
return a*b;
}
@Override
double getVolume() {
return getArea()*height;
}
}
class Cube extends ZhuTi{
double a;
double b;
double c;
public Cube(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
double getArea() {
return a*b;
}
@Override
double getVolume() {
return getArea()*c;
}
}
public class TestDemo {
ZhuTi zhuTi;
public TestDemo(ZhuTi zhuTi) {
this.zhuTi = zhuTi;
}
void test(){
System.out.println("体积:"+zhuTi.getVolume());
}
public static void main(String[] args) {
Chang chang = new Chang(1, 2, 3);
Cylinder cylinder = new Cylinder(1, 1);
// TestDemo demo = new TestDemo(chang);
TestDemo demo = new TestDemo(cylinder);
demo.test();
}
}