Java基础(七)面向对象高级特性

7-1下列程序能否编译通过,如果变异错误,请修正。

class A {
    A(int i) {
    }
}

class B extends A {

}

编译错误,classA中定义了有参数的构造方法,子类中必须显式调用父类的构造方法,修改如下:

class A {
    A(int i) {
    }
}

class B extends A {
    B() {
        super(1);
    }
}

7-2 运行类DEF,判断输出结果。

class ABC {
    void print() {
        System.out.print("ABC");

    }
}

class DEF extends ABC {
    void print() {
        System.out.print("DEF");
    }

    public static void main(String args[]) {

        ABC c = new ABC();
        c.print();
    }
}

输出:ABC

7-3 运行类DEF,判断输出结果。

class ABC {

    void print() {
        System.out.print("ABC");

    }
}

class DEF extends ABC {
    void print() {
        System.out.print("DEF");

    }

    public static void main(String args[]) {
        ABC c = new DEF();
        c.print();

    }

}

输出:DEF

7-4 对于下面的代码:
public void setVar(int a,int b,float c){}

A private void setVar(int a,float c,int b){}

B protected void setVar(int a,int b,float c){}

C public int setVar(int a,float c,int b){return a;}

D public int setVar(int a,int b,float c){return a;}

E protected float setVar(int a,int b,float c){return c;}
那些是对setVar方法的正确重载?
AC(重载只关心1方法名相同;2具有不同的形参列表:个数,类型,顺序)

7-5 下列关于接口的定义,正确的是:
A interface{void fun();}

B interface i1{void fun(){}}

C interface i1{int num;}

D interface i1{void fun();}

接口中只能定义抽象方法,不能有方法体,定义的数据成员必须是常量,所以正确的是D

7-6 下列关于main方法的声明中,可以作为程序入口的main方法是:

A public static void main()

B public static void main(String arg[])

C public void main(String[] arg)

D public static void main(String[] args)

E public static int main(String [] arg)

正确的为D

7-7 给定如下类和接口的定义
interface A{}
class B{}
class C extends B implements A{}
class D implements A{}
B b=new B();
C c=new C();
D d=new D();
哪一项在编译时是合法的?
c=d;
d=c;
A a=d;
d=(D)c;
c=b;

7-8 对于下列代码
public class Test extends Base{
public Test(int j){}
public Test(int j,int k){
super(j,k);
}
}

下列哪些是正确的调用构造方法的方式?
A Test t=new Test();

B Test t=new Test(1);

C Test t=new Test(1,2);

D Test t=new Test(1,2,3);

E Test t=(new Base()).new Test(1);

正确的是BC

7-9 对于下列的代码
public class Test extends Base{
public Test(int j){
}
public Test(int j,int k){
super(j,k);
}
}

下列那个构造方法必须出现在父类Base中显示定义?

A.Base(){}

B.Base(int j){}

C.Base(int j,int k){}

D.Base(int j,int k,int l){}

AC

7-10 在下列的代码中有a,b,c,d,e等5个变量,在action方法中,可以访问到的变量是?

public class Outer{
public int a=1;
private int b=2;
public void method(final int c){
int d=3;
class Inner{
private void action(int e){
       }
    }
  }
}

c d e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值