java语言程序设计 李元朝 第7章 类的继承和多态机制 练习题答案
2013-04-11 14:00
495 查看
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());
}
}
子类只能继承父类非私有的成员变量和方法。
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());
}
}
相关文章推荐
- java语言程序设计 李元朝 第7章 类的继承和多态机制 典型习题
- java语言程序设计 李元朝 第7章 类的继承和多态机制
- Java语言程序设计基础篇原书第十版第四章编程练习题答案
- 【JAVA语言程序设计第十版 11.2】+ 多态 + 继承
- Java语言程序设计基础篇原书第十版第六章编程练习题答案
- Java语言程序设计基础篇原书第十版第二章编程练习题答案
- Java语言程序设计-基础篇(八)继承和多态
- Java语言程序设计基础篇原书第十版第五章编程练习题答案
- Java语言程序设计-基础篇-第八版-编程练习题-第九章
- Java语言程序设计-基础篇-第八版-编程练习题-第二章
- 二级java程序设计--继承,多态,高级类特性和数组
- Java语言程序设计-基础篇-第八版-编程练习题-第三章
- 学习笔记——Java核心技术之接口、继承与多态练习题
- JAVA进阶 面向对象程序设计——第4章 继承与多态【不同访问属性使子类在使用这些成员时不同】
- Java程序语言设计基础篇原书第十版第三章答案编程练习题
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
- C语言程序设计 练习题参考答案 第五章 (2) 递归函数
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
- java语言程序设计基础 第十一章 继承11.2
- C语言程序设计 练习题参考答案 第三章 (2) 选择结构