Java 之 实验十一 -- 继承与多态
实验十一
继承与多态
练习一
下列程序有错,请仔细阅读,找出错误并改正。
(1) abstract class Man{
(2) public String name;
(3) public void Man(String name){
(4) this.name=name;
(5) }
(6) public abstract void print(){ };
(7) }
(8) public class Test40 extend Man{
(9) public Test40(String name){
(10) super(name);
(11) }
(12) public void print(){
(13) System.out.println("name="+name);
(14) }
(15) public static void main(String[] args) {
(16) Test40 xm=new Test40("tom");
(17) xm.print();
(18) }
(19) }
第 3 行错误,改为 public Man(String name){
第 6 行错误,改为 public abstract void print();
第 8 行错误,改为 public class Test40 extends Man{
练习二 设计类继承
1. 编写一个抽象类(Shape),长方形、三角形和圆形均为其子类,并各有各的属性。其父类中有计算周长和面积的方法。在测试类中,分别建立如干个对象,计算并输出各对象的周长和面积。
2.
(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x 和y值的public方法。
(2).设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。
(3).设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
(4).建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
实验要求:
. 每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
.子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
.方法名自定;
TwoDimensionalPlane.java
package J11;
import java.awt.*;
class Point{
protected int x;
protected int y;
public Point() {
this.x = 0;
this.y = 0;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
class Circle extends Point{
protected int r;
final double PI = Math.PI;
public Circle() {
super();
this.r = 0;
}
public Circle(int x, int y, int r) {
super(x,y);
this.r = r;
}
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
public double areas() {
return Math.round(Math.pow(r * Math.PI, 2));
}
}
class Cylinder extends Circle{
protected int h;
public Cylinder(int x, int y, int r, int h) {
super(x,y,r);
this.h = h;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public double volume() {
System.out.println("x="+x+",y="+y+",r="+r+",h="+h);
return Math.round(areas() * h);
}
}
public class TwoDimensionalPlane {
public static void main(String[] args) {
Cylinder c1 = new Cylinder(3,3,6,15);
System.out.println("c1:volume=" + c1.volume());
Cylinder c2 = new Cylinder(6,6,12,18);
System.out.println("c2:volume=" + c2.volume());
Cylinder c3 = new Cylinder(9,9,16,21);
System.out.println("c3:volume=" + c3.volume());
}
}
ZhouchangMianji.java
package J11;
abstract class Shape{
public abstract double perimeter();
public abstract double areas();
}
class RectAngle extends Shape{
private double a;
private double b;
public RectAngle(double a, double b) {
super();
this.a = a;
this.b = b;
}
@Override
public double perimeter() {
// TODO Auto-generated method stub
return (a + b) * 2;
}
@Override
public double areas() {
// TODO Auto-generated method stub
return a * b;
}
@Override
public String toString() {
return "RectAngle [perimeter = " + perimeter() + ", areas = " + areas() + "]";
}
}
class TriAngle extends Shape{
private double a;
private double b;
private double c;
public TriAngle(double a, double b, double c) {
super();
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double perimeter() {
// TODO Auto-generated method stub
return a + b + c;
}
@Override
public double areas() {
// TODO Auto-generated method stub
double s = (a + b + c) / 2;
double areas = Math.sqrt(s * (s-a) * (s-b) * (s-c));
return Math.round(areas);
}
@Override
public String toString() {
return "TriAngle [perimeter = " + perimeter() + ", areas = " + areas() + "]";
}
}
class Circular extends Shape{
private double r;
final double PI = Math.PI;
public Circular(double r) {
super();
this.r = r;
}
@Override
public double perimeter() {
// TODO Auto-generated method stub
return Math.round(2 * PI * r);
}
@Override
public double areas() {
// TODO Auto-generated method stub
return Math.round(Math.pow(r*PI, 2));
}
@Override
public String toString() {
return "Circular [perimeter = " + perimeter() + ", areas = " + areas() + "]";
}
}
public class ZhouchangMianji {
public static void main(String[] args) {
RectAngle r1 = new RectAngle(10,12);
System.out.println(r1.toString());
TriAngle t1 = new TriAngle(12,16,20);
System.out.println(t1.toString());
Circular c1 = new Circular(16);
System.out.println(c1.toString());
}
}

浙公网安备 33010602011771号