• 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="嘤嘤嘤
    ";
            String b="嘤嘤嘤
    ";
            String c="我就不嘤嘤嘤
    ";
            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="复读机异常
    ";
        }
        @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("还好没有复读
    ");
            }
        }
    }

  • 相关阅读:
    Java多线程系列 基础篇10 wait/notify/sleep/yield/join
    Java多线程系列 基础篇09 Object.wait/notifyJVM源码实现
    Java多线程系列 基础篇07 synchronized底层优化
    Java多线程系列 基础篇06 synchronized(同步锁)
    Java多线程系列 基础篇05 synchronized关键字
    Java多线程系列 基础篇04 线程中断
    Java多线程系列 基础篇03 线程的优先级和守护线程
    Java多线程系列 基础篇02 线程的创建和运行
    MySQL进阶14--标识列(自增序列/auto_increment)--设置/展示步长--设置/删除标示列
    MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束
  • 原文地址:https://www.cnblogs.com/littlepage/p/9849133.html
Copyright © 2020-2023  润新知