java课后习题答案
java课本课后习题答案
答:父子类在同一包中时子类可以继承父类的友好成员。
2、子类通过什么办法,可以隐藏继承的成员变量。
答:子类成员变量与父类成员变量同名。
3、子类重写继承方法的规则是什么?
答:重写隐藏父类的方法需:返回的数据类型相同,参数的个数相同,并且类型相同。 如果重写父类的方法后参数的个数或类型不同会出现子类方法的重载。
4.子类的构造方法的第一条语句是什么?
答:如果需要调用父类构造方法,则应是用super关键词调用父类的构造方法。
5、子类一旦重写了继承的方法,就会隐藏继承的方法。是这样吗?
答:不一定。在参数的个数或类型不同时会产生重载。如果只有返回值的类型不同,将会产生编译错误。
(5)子类隐藏父类的方法,参数必须______相同并且__________相同.
答: 个数 ,类型
6、子类重写继承方法时,可以降低方法的权限吗?
答:重写继承方法时不能降低访问权限。
7、简述关键字super的用法。
答:1)子类调用父类的构造方法。
2)子类对象引用被隐藏了的父类方法,或成员变量。
8.假设父类有一个方法:
Public double f(double x, double y){
return x+y; }
是否允许子类再声明如下的方法:
Public float f(double x, double y){
return 23; }
答:不允许。
9、父类的final方法可以被子类重写吗?
答:不可以
10、什么类中可以有abstract方法?
答:被abstract修饰的类。接口中也可以有abstract方法
11、什么叫做对象的上转型对象?
答:用子类的构造方法构造出来的对象,赋值给父类对象。
12、什么叫接口回调?
答:用实现接口的类创建的对象,赋值给该接口声明的接口变量。
13、与类有关的匿名类一定是该类的子类吗?与接口有关的匿名类一定是实现该接口的一个类吗?
答:一定,因为类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体。即匿名类,匿名类就是一个子类。与接口的匿名类相同。一定是子类。
14、怎样声明一个泛型类?
答:我们可以这样声明一个泛型类:
class A 其中A时泛型的名称,E是其中的泛型,即我们没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本数据类型。
15、阅读下列程序,并说明输出结果。
class NegativeIntegerException extends Exception{
String message;
public NegativeIntegerException(){
message="方法的参数值不是正整数"; }
public String toString(){
return message; } }
class MaxCommonDivisor{
public int getMaxCommonDivisor(int a, int b)throws NegativeIntegerException{
if(a<0||b<0)
throw new NegativeIntegerException();
int r=0;
if(a>b){
int t=a; a=b; b=t; }
r=a%b;
while(r!=0){
a=b;
b=r;
r=a%b; }
return b; } }
class MinCommonMultiple extends MaxCommonDivisor{
public int getMinCommonMultiple(int a, int b)throws NegativeIntegerException{
if(a<0||b<0)
throw new NegativeIntegerException();
int y=0;
int x=getMaxCommonDivisor(a,b);
y=(a*b)/x;
return y; } }
public class Example{
public static void main (String arg[]){
int maxCommonDivisor, minCommonMultiple;
MaxCommonDivisor max=new MaxCommonDivisor();
MinCommonMultiple min = new MinCommonMultiple();
try{
maxCommonDivisor=max.getMaxCommonDivisor(18,12);
System.out.println("最大公约数:"+ maxCommonDivisor);
minCommonMultiple=min.getMinCommonMultiple(18,12);
System.out.println("最小公倍数:"+minCommonMultiple);
maxCommonDivisor=max.getMaxCommonDivisor(-64,48);
System.out.println("最大公约数:"+maxCommonDivisor); }
catch(NegativeIntegerException e){
System.out.println(e.toString()); } } }
3。编写一个类要求实现一个接口,该接口有3个abstract方法:
Public abstract void f( int x);
Public abstract void g(int x, int y);
Public abstract double h(double x);
要求在应用程序主类中使用该类创建对象,并使用接口回调调用方法f(), g() 和h(). 解:
interface A{
public abstract void f(int x);
public abstract void g(int x,int y); public abstract double h(double x); }
class A1 implements A{
public void f(int x){
System.out.println(x); }
public void g(int x,int y){
int z=x+y;
System.out.println(z); }
public double h(double x){ return x*x; } }
class A2 implements A{
public void f(int x){
System.out.println("Hello:"+x); }
public void g(int x,int y){
int z=x-y;
System.out.println(z); }