初学Java 有没有哪位帮忙解答一下? 5
解答如下:
(一)
1.新建一个名为Shape的抽象类,然后定义属性color,两个抽象方法calPerimeter(),Type()。
public abstract class Shape {
private String color;//属性一般访问类型私有。
protected abstract double calPerimeter();//访问类型受保护,只能本类或子类进行访问
protected abstract String Type();
/**
* 为color属性添加get/set方法
* @return
*/
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
2.新建一个名为Circle类继承Shape类,然后定义属性radious,重写父类方法calPerimeter(),Type()。
public class Circle extends Shape {
private double radius;//属性私有化,在为其添加get/set
@Override
public double calPerimeter() {
return Math.PI * 2 * radius;//计算周长2 * pI * r
}
@Override
public String Type() {
super.setColor("红色");//super指向父类,为其设置颜色
return super.getColor()+"圆形";//
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
3.新建一个名为Triangle类继承Shape类,然后定义属性a、b、c,重写父类方法calPerimeter(),Type(),定义setSides(double a,double b,double c)
方法。
public class Triangle extends Shape {
private double a;//假三边分别是 a,b,c,然后为其添加get/set方法。
private double b;
private double c;
@Override
public double calPerimeter() {
return a + b + c;
}
@Override
public String Type() {
super.setColor("黄色");//super指向父类,为其设置颜色
return super.getColor()+"三角形";
}
public boolean setSides(double a,double b,double c){
if(a + b > c && a - b < c){//两边之和大于第三边,两边之差小于第三边则是三角形,给属性赋值。
this.a = a;
this.b = b;
this.c = c;
return true;
}
//否则都不是三角形
return false;
}
}
4.写测试类TestShape,这里用的是Junit测试。
public class TestShape {
@Test//测试
public void m1(){
Circle circle = new Circle();
circle.setRadius(6);//假设半径为6;
System.out.println(circle.calPerimeter());
System.out.println(circle.Type());
}
@Test//测试
public void m2(){
Triangle triangle = new Triangle();
boolean flag = triangle.setSides(5,8,10);
if(flag){//如果为真,则是三角形
System.out.println(triangle.calPerimeter());
System.out.println(triangle.Type());
}else{//否则不是三角形
System.out.println("不是三角形");
}
}
}
5. 测试m1运行结果
6.测试m2运行结果
(二)
1.新建一个名为Animal的抽象类,然后定义属性name,抽象方法enjoy()。
public abstract class Animal {
private String name;
public Animal() {
}
protected abstract void enjoy();
}
2. 新建一个名为Cat类继承Animal类,定义属性eye,重写enjoy()。
public class Cat extends Animal {
private String eye;
public String getEye() {
return eye;
}
public Cat() {
}
public Cat(String eye) {
this.eye = eye;
}
@Override
protected void enjoy() {
System.out.println("喵喵喵");
}
public void setEye(String eye) {
this.eye = eye;
}
}
3. 新建一个名为Dog类继承Animal类,定义属性fur,重写enjoy()。
public class Dog extends Animal {
private String fur;
public String getFur() {
return fur;
}
public Dog() {
}
public Dog(String fur) {
this.fur = fur;
}
@Override
protected void enjoy() {
System.out.println("汪汪汪");
}
public void setFur(String fur) {
this.fur = fur;
}
}
4. 新建一个名为Lady类,定义属性name,color,定义方法myPetenjoy()
public class Lady {
private String name;
private String color;
public Lady(String name,String color) {//有参构造
this.name = name;
this.color = color;
} public Lady(){//无参构造 };
protected void myPetenjoy(){
Cat cat1 = new Cat("蓝色");
Dog dog1 = new Dog("黑色");
cat1.enjoy();//猫叫
String eye = cat1.getEye();
System.out.println("猫的眼睛颜色为:"+eye);
dog1.enjoy();//狗叫
String fur = dog1.getFur();
System.out.println("狗的毛颜色为:"+fur);
}
}
5.写测试类TestShape,这里用的是Junit测试。
public class TestAnimal {
@Test
public void m1(){
Animal cat = new Cat("蓝色");
Animal dog = new Dog("黑色");
Lady lady = new Lady();
lady.myPetenjoy();
}
}
6. 测试结果