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 class Demo03 {
    public static void main(String[] args) {
        System.out.println(new Function().f(12, 18));
        System.out.println(new SonFunction().f(12, 18));
    }
}
class Function{
    public int f(int a,int b) {
        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;
            }
        }
        return fin;
    }
}
class SonFunction extends Function{

    @Override
    public int f(int a, int b) {
        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 class Demo03 {
    public static void main(String[] args) {
        A a=new C();
        a.f(1);
        a.g(1, 1);
        a.h(1);
    }
}

interface A{
    public abstract void f(int x);
    public abstract void g(int x,int y);
    public abstract double h(double x);
}
class C implements A{

    @Override
    public void f(int x) {
        System.out.println("This is f()");
    }

    @Override
    public void g(int x, int y) {
        System.out.println("This is g");
    }

    @Override
    public double h(double x) {
        System.out.println("This is h");
        return 0;
    }
    
}

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

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

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

public class Demo04 {
    public static void main(String[] args) {
        String a="嘤嘤嘤\n";
        String b="嘤嘤嘤\n";
        String c="我就不嘤嘤嘤\n";
        try {
            new RetalkTest().ReTalk(b, c);
            new RetalkTest().ReTalk(a, b);
        } catch (RetalkException e) {
            e.printStackTrace();
        }
        
    }
}
class RetalkException extends Exception{
    String message="";
    public RetalkException(){
        message="复读机异常\n";
    }
    @Override
    public String toString() {
        return message;
    }
    
}
class RetalkTest{
    public void ReTalk(String a,String b) throws RetalkException {
        System.out.println(a+b);
        if(a.equals(b)) {
            throw new RetalkException();
        }
        else {
            System.out.println("还好没有复读\n");
        }
    }
}

 

posted @ 2018-10-28 03:47  SteveYu  阅读(1159)  评论(0编辑  收藏  举报