0
点赞
收藏
分享

微信扫一扫

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



 



 



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"); 
   
 
   

            } 
   
 
   

       
   
 
   

     }

举报

相关推荐

【Java基础】2、Java基础语法

Java基础——线程基础

Java基础-IO基础

Java基础

JAVA基础

Java 基础

java基础

0 条评论