编写一个程序实现方法的覆盖java_java语言程序设计 李元朝 第7章 类的继承和多态机制 练习题答案...

1.子类能够继承父灰的哪些成员变量和方法?

子类只能继承父类非私有的成员变量和方法。

2.重载与覆盖有什么不同?

方法重载指在一个类中创建了多个方法。它们具有相同的方法名,但参数的个数不同、或参数的数据类型不同,或两者都不同

覆盖是指子类中定义的方法与父类方法名相同,子类在调用这个同名方法时,默认是调用它自已定义的方法,而将从父类那里继承来的方法进行覆盖,如

果一定要调用父类的同名方法,可以使用super关键字来指定。

3.编写一个程序实现方法的重载。

class Tiff {

public Tiff(){ };

double calculate(float r)

{

return Math.PI*r*r;

}

double calculate(float r,float h)

{

return Math.PI*r*r*h;

}

public static void main(String args[])

{

Tiff tiff=new Tiff();

System.out.println("Area="+tiff.calculate(12.6f));

System.out.println("Volume="+tiff.calculate(12.6f,37.8f));

}

}

4.编写一个程序实现方法的覆盖

class CCircle {

protected double radius;

public CCircle(double r)

{

radius=r;

}

public void show()

{

System.out.println("Radius="+radius);

}

}

class CCoin {

private int value;

public CCoin(double r, int v)

{

super(r);

value=v;

}

public void show()

{

System.out.println("Radius="+radius+"  Value="+value);

}

public static void main(String[] args)

{

CCircle circle=new CCircle(2.0);

CCoin coin=new CCoin(3.0,5);

circle.show();

coin.show();

}

}

5.编写一个使用this和super的程序

class Parent {

protected int x;

public Parent(int i)

{

x=i;

}

int getX() {  return x;    }

void show()

{

System.out.println("x="+x);

}

}

class Son {

protected int x;

public Son(int j)

{

super(3);             //调用父类的构造方法

this.x=j;            //引用子类中的成员变量x

}

void show()

{

System.out.println("super.x="+super.x+" "+"this.x="+x);

//分别输出父类和子类的成员变量x

}

public static void main(String args[])

{

Son son=new Son(5);

son.show();

}

}

6.final成员变量和方法有什么特点?

用它可以修饰类及类中的成员变量和成员方法。用final修饰的类不能被继承,用final修饰的成员方法不能被覆盖,用final修饰的成员变理不能被修改

7.已有一个交通工具类vehicle,其中的属性包括:速度speed、类别kind、颜色color;方法包括设置速度、设置颜色、取得类别、取得颜色。设计一个小车类

car,继承自vehicle。car中增加了属性:座位数passenger,增加了设置和获取座位数的方法,创建car的对象,为其设置新速度和颜色,并显示其状态(所有属性)

class Vehicle {

String color;

String kind;

int speed;

Vehicle()                  //默认构造方法

{

color="";

kind="";

speed=0;

}

public void setColor(String color1)

{

color=color1;

}

public void setSpeed(int speed1)

{

speed=speed1;

}

public void setKind(String kind1)

{

kind=kind1;

}

public     String getColor()

{

return color;

}

public String getKind()

{

return kind;

}

public int getSpeed()

{

return speed;

}

}

class Car extends Vehicle {

int passenger;

public Car()                         //默认构造函数

{

super();

passenger=0;

}

public void setPassenger(int passenger)

{

this.passenger=passenger;

}

public int getPassenger()

{

return passenger;

}

public static void main(String[] args)

{

Car Benz=new Car();

Benz.setColor("Yellow");

Benz.setKind("Roadster");

Benz.setSpeed(120);

Benz.setPassenger(4);

System.out.println("Benz: ");

System.out.println("Color "+Benz.getColor());

System.out.print("Speed (km/h)");

System.out.println(Benz.getSpeed());

System.out.println("Kind "+Benz.getKind());

System.out.print("Passenger ");

System.out.println(Benz.getPassenger());

}

}

8.设计一个圆类circle,具有属性:圆心坐标x和y及圆半径r,除具有设置及获取属性的方法外,还具有计算周长的方法permeter()和计算面积的方法area().

再设计一个圆柱体类cylinder,cylinder继承自circle,增加了属性:高度h,增加了设置和获取h的方法、计算表面积的方法area()和计算体积的方法volume

().创建car的类对角,显示其所有属性,计算并显示其面积和体积。

class Circle {

double x;

double y;

double r;

Circle(double x,double y,double r)

{

this.x=x;

this.y=y;

this.r=r;

}

public void setX(double x)

{

this.x=x;

}

public void setY(double y)

{

this.y=y;

}

public void setR (double r)

{

this.r=r;

}

public double getX()

{

return x;

}

public double getY()

{

return y;

}

public double getR ()

{

return r;

}

public double area()

{

return r*r*3.1416;

}

public double perimeter()

{

return 2*r*3.1416;

}

public void show()

{

System.out.print("x="+x+", y="+y+", Radius="+r);

}

}

class Cylinder extends Circle {

double h;

Cylinder(double x,double y,double r,double h)

{

super(x,y,r);

this.h=h;

}

public void setH (double h)

{

this.h=h;

}

public double getH ()

{

return h;

}

public double area()                 //计算圆柱体的表面积,覆盖了父类的area()函数

{

return perimeter()*h+super.area()*2;

}

public double volume()                      //计算圆柱体的体积

{

return super.area()*h;

}

public static void main(String[] args)

{

Cylinder cylinder=new Cylinder(1,1,4,8);

cylinder.show();

System.out.println(", Height="+cylinder.getH ());

System.out.println("Area="+cylinder.area());

System.out.println("Volume="+cylinder.volume());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值