java继承接口和泛型,JavaSE习题 继承接口和泛型

问答题:

1.子类在什么情况下可以继承父类友好成员?

答:在同一个包内

2.子类通过怎样的方法可以隐藏继承的成员变量?

答:声明一个与父类相同变量名的成员变量

3.子类重写继承的方法原则是什么?

答:保证方法的名字,类型,参数个数,类型同父类完全相同

4.子类的构造方法第一条语句是什么?

答:super(),如果不写,编译器也会自动调用

5.子类对象一单重写了继承的方法,就会隐藏继承的方法,对吗?

答:对

6.子类重写继承方法时,可以降低方法的访问权限嘛?

答:不可以,只可以增加权限

7.简述super关键字用法

答:super关键字是一个引用超类的对象

8.假设父类有个方法

public double f(double x,double y){

return x+y;

}

是否允许子类再次声明下面方法

public float f(double x,double y){

return 23;

}

答:允许,该overwrite就隐藏了父类的方法

9.父类的final方法可以被子类重写嘛

答:不可以

10.什么类可以有抽象方法?

答:抽象类

11.什么叫对象的上转型对象?

答:子类对象引用放入父类的声明

12.什么叫接口回调?

答:子类接口引用调入父类接口声明

13.与类有关的匿名类一定是该类的一个子类吗?与接口有关的匿名类一定是实现接口的子类吗?

答:一定是,一定是

14.怎样声明一个泛型类?怎样评价SDK1.5新出的泛型?

答:使用尖括号,对未来的实际开发有了很大改善吧

15阅读下列程序,写出下列程序的结果。

程序在书本上

答:最大公约数:6

最小公倍数:36

最大公约数:方法的参数值不是正整数

16下列程序中,错误代码是哪一个?

答:在classA中,getFloat方法是友好型,所以B继承A类后,getFloat方法只能扩大权限,不能缩小为private类型

作业题

1.编写一个类,该类中有如下方法;

public int f(int a,int b){

}//要求找出ab的最大公约数

编写一个该类子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数

要求:在重写方法的方法体中首先调用被隐藏的方法返回ab的最大公约数m,然后将(a*b)/m的值返回,在应用的程序的主类中分别用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数

public classDemo03 {public static voidmain(String[] args) {

System.out.println(new Function().f(12, 18));

System.out.println(new SonFunction().f(12, 18));

}

}classFunction{public int f(int a,intb) {if(a>b) {int temp=a;

a=b;

b=temp;

}int fin = 0;for(int i=1;i<=a;i++) {if(a%i==0&&b%i==0) {

fin=i;

}

}returnfin;

}

}classSonFunction extends Function{

@Overridepublic int f(int a, intb) {int m=super.f(a, b);return (a*b)/m;

}

}

2.编写一个抽象类,该类有3个抽象方法

public abstract void f(int x);

public abstract void g(int x,int y);

public abstract double h(double x);

然后分别给出这个抽象类的3个子类

要求,在应用程序的主类中创建子类对象,再向上转型对象调用方法f,g,h

public classDemo03 {public static voidmain(String[] args) {

A a=newC();

a.f(1);

a.g(1, 1);

a.h(1);

}

}interfaceA{public abstract void f(intx);public abstract void g(int x,inty);public abstract double h(doublex);

}classC implements A{

@Overridepublic void f(intx) {

System.out.println("This is f()");

}

@Overridepublic void g(int x, inty) {

System.out.println("This is g");

}

@Overridepublic double h(doublex) {

System.out.println("This is h");return 0;

}

}

4.举例说明匿名类的用法

直接new出来,不需要后续的调用的时候可以这样

5.编写一个异常类,并写出一个产生异常的方法,在应用程序中测试异常

public classDemo04 {public static voidmain(String[] args) {

String a="嘤嘤嘤\n";

String b="嘤嘤嘤\n";

String c="我就不嘤嘤嘤\n";try{newRetalkTest().ReTalk(b, c);newRetalkTest().ReTalk(a, b);

}catch(RetalkException e) {

e.printStackTrace();

}

}

}classRetalkException extends Exception{

String message="";publicRetalkException(){

message="复读机异常\n";

}

@OverridepublicString toString() {returnmessage;

}

}classRetalkTest{public voidReTalk(String a,String b) throws RetalkException {

System.out.println(a+b);if(a.equals(b)) {throw newRetalkException();

}else{

System.out.println("还好没有复读\n");

}

}

}

e769d9045c356cc9f364b4256aa9061e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值