JAVA 基础

1、关于用abstract定义的类,下列说法中正确的是:

A.可以被实例化 B.不能够派生子类 C.不能被继承 D.只能被继承

 

答案:

 

父类中的某些方法不包含任何逻辑,并且需要由子类重写,在这种情况下,应该使用关键字abstract来声明父类中的方法,子类提供对这种abstract方法的实现细节。而父类仅提供此方法的名称和声明,没有方法的主体,因此子类应该负责重写此方法。

 

任何包含一个或多个抽象方法的类也应该声明为抽象。要声明一个抽象类,在class关键字前应该加上关键字abstract。抽象类不能被实例化,构造方法和static 方法不能被声明为abstact。abstract类的任何子类必须实现父类中声明的所有abstract方法,否则子类必须声明为抽象类。

 

abstract类不能有对象,但他们可以用来创建对象引用,因为java运行时多态性是通过类引用实现的。因此,对象可以来创建对抽象类的引用,抽象类可以指向子类的对象。

 
 
2、当类成员未使用修饰符修饰时,Java认为该成员的访问权限是: 
A.public B.friendly C.protected D.privare
 
答案:
起始严格来讲是没有答案的 friendly不用于Java 它属于c++术语。对于一个Class的成员变量或成员函数,如果不用public, protected, private中的任何一个修饰,那么该成员获得“默认访问控制”级别,即package access (包访问)。
 
属于package access的成员可以被同一个包中的其他类访问,但不能被其他包的类访问。
 
包访问的控制力弱于private,但强于protected。因为一方面,只要是子类,不管子类与父类是否位于同一个包中,那么子类都可以访问父类中的protected方法。但是一旦位于原类的包外,不管是否是其子类,都无法访问其属于package access级别的成员。而另一方面,一个类可以访问同一个包中另一个类的package access成员,同时也能访问其protected成员。
(注:package是Java中的关键字,虽然包访问也是一种访问控制级别,但关键字”package”只能用来表示类属于哪个包,而不能像”private”,”public”那样放到成员变量或函数前面,作为访问控制修饰符。) 
访问级别保护的强度:public<protected<默认<private 
 
 
3、在面向对象的语言中, 以下描述错误的包括(B ) 。
A.类的实例化是指对类的实例分配存储空间
B.每个类都必须创建一个实例
C.每个类只能创建一个实例
D.类的实例化是指对类进行初始化
 
答案:B。因为抽象类不能创建实例,只能被继承
 
 
4、有以下方法的定义,请选择该方法的返回类型(b d)。
ReturnType  method(byte x, double y) {
    return  (short)x/y*2;
}
A、byte                B、short               C、int                   D、double
 
答案:D。先转换,再除,再乘。
 
5、阅读以下代码:
import java.io.*;
import java.util.*;
public class foo{
public static void main (String[] args){
String s;
System.out.println("s=" + s);
}
}
输出结果应该是:(c)
A、代码得到编译,并输出“s=” 
B、代码得到编译,并输出“s=null” 
C、由于String s没有初始化,代码不能编译通过
D、代码得到编译,但捕获到 NullPointException异常
 
6、编译运行以下程序后,关于输出结果的说明正确的是 (c)
public  class   Conditional{
    public  static  void  main(String  args[ ]){
          int x=4;
          System.out.println(“value  is  “+ ((x>4) ? 99.9:9));
}
}
A、输出结果为:value  is  99.9             B、输出结果为:value  is  9
C、输出结果为:value  is  9.0              D、编译错误
 
 
7、指出下列程序运行的结果 ( b)
public class Example{ 
    String str=new String("good"); 
     char[] ch = {'a','b','c'}; 
     public static void main(String args[]){ 
         Example ex=new Example(); 
         ex.change(ex.str,ex.ch); 
         System.out.print(ex.str+" and "); 
         Sytem.out.print(ex.ch); 
     }
    public void change(String str,char ch[]){ 
         str="test ok"; 
         ch[0]='g'; 
     }
}
A、 good and abc 
B、 good and gbc 
C、 test ok and abc 
D、 test ok and gbc 
 
8、给出下面代码段, 哪行将引起一个编译时错误?( d)
1.public class Test { 
2. int n = 0; 
3. int m = 0; 
4. public Test(int a) { m=a; } 
5. public static void main(String arg[]) { 
6.   Test t1,t2; 
7.   int j,k; 
8.   j=3; k=5; 
9.   t1=new Test(); 
10.  t2=new Test(k); 
11. } 
12.}
A、 行1                B、 行4              C、行6               D、行9
 
9、选项中哪一行代码可以替换题目中//add code here而不产生编译错误?(a )
public abstract class MyClass {
    public int constInt = 5;
    //add code here
    public void method() {
    }
}
A、public abstract void method(int a);
B、value = value + 5;
C、public int method();
D、public abstract void anotherMethod() {}
 
10、下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果(d )
class People {
       String name;
       public People() {  System.out.print(1); }
       public People(String name) {
              System.out.print(2);
              this.name = name;
       }
}
class Child extends People {
       People father;
       public Child(String name) {
              System.out.print(3);
              this.name = name;
              father = new People(name + ":F");
       }
       public Child(){ System.out.print(4); }
A、312              B、32
C、432              D、132
 
11、以下程序编译不通过
class People {
       String name;
       //public People() {  System.out.print(1); }
       public People(String name) {
              System.out.print(2);
              this.name = name;
       }
}
class Child extends People {
       People father;
       public Child(String name) {
              System.out.print(3);
              this.name = name;
              father = new People(name + ":F");
       }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值