今日JAVA——练习题十一

JAVA每日随手练【封装(包)与继承】

1.单选题一

关于包的说法, 下列错误的是:( )
A.包是一组类的集合
B.包能防止类的名字冲突
C.import 语句能够导入一个指定的包
D.import static 能够导入一些静态方法

正确答案:C

【分析】:
A.包是一组类的集合,一个包可以包含若干个类文件, 还可包含若干个包
B.Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
D.利用import static 可以不通过调用包名,直接使用包里的静态方法。在JDK 1.5之后提供了静态导入功能。如果一个类中的方法全部是使用static声明的静态方法,则在导入时就可以直接使用import static的方式导入。

2.单选题二

如下代码的 结果是什么 ?
A.Base
B.BaseBase
C.编译失败
D.代码运行但没有输出
E.运行时抛出异常

class Base {
  Base() {
  	System.out.print("Base"); 
  }
}
public class Alpha extends Base {
  public static void main( String[] args ) {
    new Alpha();
    //调用父类无参的构造方法
    new Base();
  } 
}

正确答案:B

【分析】:在实例化子类的同时执行子类的构造函数,但执行执行子类构造函数时,会先执行父类的构造函数

3.单选题三

以下程序的输出结果为()
A.BD
B.DB
C.C
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");
  }
}

正确答案:D

【分析】:调用子类的构造方法前会隐式的调用父类的无参构造方法,如果父类没有无参构造方法就必须显示的调用父类的有参构造方法。很显然,此题的父类Base没有无参构造方法,也没有调用父类的有参构造方法,所以编译不通过。

4.单选题四

以下程序执行的结果是:()
A.ZYXX
B.ZYXY
C.YXYZ
D.XYZX

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();
	}
}

正确答案:C

【分析】:

第一个知识点:继承。子类继承父类,程序执行的过程中先加载用父类,这也是出现重写的原因。所以程序先加载了类X。
第二个知识点:因为java程序在执行时先加载全局变量。在X类中的成员变量是Y b = new Y();在程序加载b 时需要调用类Y的无参构造方法,就输出了Y。
第三个知识点:构造器。程序调用默认调用的是构造器是无参构造器,所以在继承类X时,程序先执行了X的无参构造器输出x(当给这个参构造器有参数时就不会输出x)。当new一个对象时就是调用这个类的构造器。第三个输出和第四个输出和上面类似。

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();                 // 第四个输出
	}
}

5.单选题五

以下关于java封装的描述中,正确的是:()
A.super关键字是在子类对象内部指代其父类对象的引用
B.super关键字不仅可以指代子类的直接父类,还可以直接指代父类的父类
C.子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D.子类通过super关键字只能调用父类的属性,而不能调用父类的方法

正确答案:A

【分析】:
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值