zoukankan      html  css  js  c++  java
  • 第一次月测内容疑问总结

    final:
    * final可以修饰类,方法,和变量
    * final修饰方法,不可以被重写
    * final修饰类,该类不能被继承
    * final修饰的变量,为常量,不可改变
     
    abstract:修饰类,类中的抽象方法在被继承的时候需要重写,且此类不能被实例化(即创建对象),抽象类中可以存在构造器可以没有抽象方法,但有抽象方法就一定是抽象类。
    重写是指,子类中的方法与父类中的方法有完全相同的方法签名,即返回值类型,方法名,参数都完全相同。子类方法的访问级别不能低于父类方法的访问级别
    类中的变量如果使用static和final修饰,必须声明同时初始化,不可被改变
     
    数组在内存中以对象的形式存在
     
    (单选题)下列程序输出结果是( )。
    class Super {
     public static void m1() {
      System.out.println("m1 in Super"); }
     public void m2() {
      System.out.println("m2 in Super"); }}
    class Sub extends Super {
     public static void m1() {
      System.out.println("m1 in Sub"); }
     public void m2() {
      System.out.println("m2 in Sub"); }}
    public class TestMain {
     public static void main(String args[]) {
      Super sup = new Sub();
      sup.m1();
      sup.m2();
      Sub sub = (Sub) sup;
      sub.m1();
      sub.m2(); }}
        A.m1 in Sub
        m2 in Sub
        m1 in Sub
        m2 in Sub
        B.m1 in Super
        m2 in Super
        m1 in Sub
        m2 in Sub
        C.m1 in Sub
        m2 in Sub
        m1 in Super
        m2 in Super
        D.m1 in Super
        m2 in Sub
        m1 in Sub
        m2 in Sub
    正确答案:D
    静态方法:可以被继承和隐藏  而不能够被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象进行多态调用。
     
    22.
    (单选题)下列程序运行结果是( )。
    public class Test {
     String str=new String("tedu"); 
     char[]ch={'x','y','z'}; 
     public static void main(String args[]){ 
      Test t = new Test(); 
      t.change(t.str,t.ch); 
      System.out.print(t.str+" and "); 
      System.out.print(t.ch);} 
     public void change(String str,char ch[]){ 
      str="tarena"; 
      ch[0]='w'; 
        }
    }
        A.tedu and xyz
        B.tarena and xyz
        C.tedu and wyz
        D.tarena and wyz
    正确答案:C
    本题考查方法的调用
    调用带有引用数据类型参数的方法,传的是引用,当在方法中操作该引用,被传递的参数所指向的对象将发生变化。本题中,调用change()方法,传递一个字符串类型引用,和数组对象的引用,方法中
    将字符串引用重新指向了一个新的字符串对象,源字符串对象不会发生变化。还是
    tedu,而方法中对数组的操作,改变了源数组中第1个元素,源数组被改变后为
    wyz,所以本题选项C正确
     
    (单选题)给出以下代码,请问该程序的运行结果是( )。 
    public abstract class AbstractClass{
     public AbstractClass(){
      System.out.printIn("abstract class constructor!");
     } 
     public void aMethod(){
      System.out.printIn("method in the abstract class");
     }
    }
        A.代码编译失败,因为抽象类不能有构造器。
        B.代码编译失败,因为当类不存在抽象方法时,是不能定义为抽象类的。
        C.代码编译成功,并且因为该类实际上不是抽象类,因此可以被实例化。
        D.代码编译成功,但不能被实例化。可以被扩展为非抽象类,子类的构造器可以调用抽象父类的构造器。
    正确答案:D
    本题考查抽象类
    选项A错误,编译成功,抽象类是可以有构造器的。
    选项B错误,编译成功,抽象类中可以没有抽象方法,但是如果一个类中有抽象方法
    这个类必须是抽象类。
    选项C错误,编译成功,但是只要是抽象类,就不能创建对象。
    选项D正确,抽象类不能被实例化,只能由其子类实例化。
  • 相关阅读:
    git 无法提交到远程服务器【转载】
    vscode 常用快捷键
    mongodb nodejs一个有自增id的功能
    C++ lambda表达式与函数对象
    TypeScript的async, await, promise,多参数的调用比较(第2篇)
    了解TypeScript的async,await,promise(第1篇)
    TyepScript判断一个变量是null, or undefined
    MongoClient 对 Mongodb的 增删改查 操作
    TypeScript第一个Promise程序
    C++基类的继承和多态
  • 原文地址:https://www.cnblogs.com/cgwjava/p/11390389.html
Copyright © 2011-2022 走看看