面向对象编程练习
1.以下程序的输出结果为(D)
class Base{
public Base(String s){
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}
A.BD
B.DB
C.C
D.编译错误
解析:因为父类中定义了有参构造,默认的无参构造就不再生成。在Derived子类中会默认调用父类的有参构造super(s);
程序会编译出错。
2.以下程序执行的结果是(C)
class X{
Y y=new Y();
public X(){
System.out.print("X");
}
}
class Y{
public Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y=new Y();
public Z(){
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
A.ZYXX
B.ZYXY
C.YXYZ
D.XYZX
解析:
对象初始化:
1.new现在堆上开辟空间(此时内中所有属性都有默认值)。
2.调用构造方法进行属性的赋值。
3.Z继承X的,所有先调用X的构造方法,所以先打印YX,后打印YZ即最后结果为YXYZ.
3.在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为 (C)
A.隐藏
B.重写
C.重载
D.无此特性
4.java 接口的修饰符可以为(D)
A.private
B.protected
C.final
D.abstract
解析:
(1)接口必须要用子类实现所以不能用private修饰;
(2)protected为继承访问权限,不能用来修饰接口,接口要用子类来实现,一般为public修饰;
(3)final终结器:
修饰属性-常量;
修饰方法-方法不能被重写;
修饰类-类不能有子类;
所以不能用final修饰接口;