欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第一次月测内容疑问总结

程序员文章站 2022-06-05 18:47:41
final:* final可以修饰类,方法,和变量* final修饰方法,不可以被重写* final修饰类,该类不能被继承* final修饰的变量,为常量,不可改变 abstract:修饰类,类中的抽象方法在被继承的时候需要重写,且此类不能被实例化(即创建对象),抽象类中可以存在构造器可以没有抽象方 ......
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正确,抽象类不能被实例化,只能由其子类实例化。