实验目的:
掌握类的继承和多态、抽象类及接口基本功能
实验内容:
1、设计一个图形类(Graph),设计其子类二维图形和三维图形,二维图形计算面积,三维图形计算体积;设计二维图形的子类圆形、矩形、三角形和梯形,分别计算其面积;设计三维图形的子类圆、长方体,计算其体积
2、模拟动物园饲养员给动物喂食。每一种动物需要吃不同的食物,饲养员针对不同的动物,喂不同的食物。
动物园里有狗(狗吃骨头,会做算术)、猫(猫吃鱼,会跳环)、老虎(老虎吃肉,会顶球)
试采用普通方式、抽象类方式、接口方式来进行多态的实现
//创建类Graph
public class Graph {//圆形类
double area;
double volume;
public double getArea() {
return area;
}
public double getVolume () {
return volume;
}
}
//创建类Two_Dimension
public class Two_Dimension {//二维图
double area;
public double getArea(){
return area;
}
}
public class Bal extends Two_Dimension{
double r;
double area;
public double getArea() {
area = 3.14 * r * r;
return area;
}
}
class Rectangle extends Two_Dimension { //矩形继承二维图形
double a;//长
double b;//宽
double area;
public double getArea() {
area = a * b;
return area;
}
}
//创建类Three_Dimension
public class Three_Dimension {//三维图
double volume;
public double getVolume () {
return volume;
}
}
class Ball extends Three_Dimension{ //球继承三维图形
double r;
double volume;
public double getVolume() {
volume = 4 / 3 * 3.14 * r * r * r;
return volume;
}
}
//创建主类:
package aa;
import java.util.*;
public class Mc {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Bal c1 = new Bal();
Rectangle r1 = new Rectangle();
Ball b1 = new Ball();
System.out.print("请输入圆的半径:");
c1.r = scanner.nextDouble();
System.out.print("请输入矩形的长:");
r1.a = scanner.nextDouble();
System.out.print("请输入矩形的宽:");
r1.b = scanner.nextDouble();
System.out.print("请输入球的半径");
b1.r = scanner.nextDouble();
System.out.println("圆的面积为:"+ c1.getArea());
System.out.println("矩形的面积为:"+ r1.getArea());
System.out.println("球的体积为:"+ b1.getVolume());
}
}
创建了6个类,有Graph;Two_Dimension;Three_Dimension;Bal,Rectanger;Ball;Mc
其中Bal,Rectanger继承了二维类Two_Dimension;Ball继承了三维类Three_Dimension
展现了类的多态性和继承性。
结果为:
请输入圆的半径:2
请输入矩形的长:4
请输入矩形的宽:3
请输入球的半径:3
圆的面积为:12.56
矩形的面积为:12.0
球的体积为:84.78
//抽象类继承
//创建一个抽象类StrockMan
public class StrockMan {
public abstract void eat();
public abstract void action();
}
//创建一个类Cat继承StrockMan
public class Cat {
public void eat() {
System.out.println("我要吃鱼~");
}
public void action() {
System.out.println("我会跳环~");
}
}
//创建一个类Dog继承StrockMan
public class Dog {
public void eat() {
System.out.println("我吃骨头~");
}
public void action() {
System.out.println("我会算数~");
}
}
//创建一个类Tiger继承StrockMan
public class Tiger {
public void eat() {
System.out.println("我要吃肉~");
}
public void action() {
System.out.println("我会顶球~");
}
}
//创建一个类Main_Test
public class Main_Test {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
Tiger tiger = new Tiger();
System.out.println("我是猫~");
cat.eat();
cat.action();
System.out.println();
System.out.println("我是狗~");
dog.eat();
dog.action();
System.out.println();
System.out.println("我是老虎~");
tiger.eat();
tiger.action();
}
}
创建五个类:抽象类Strockman;子类Cat,Dog,Tiger;主类Main_Test
三个子类是父类是抽象类Strockman
运行结果是: