目录
一、选择题
二、多选
三、判断
四、简答题
1、方法重载(overload)和重写(override)的区别
2、final用于修饰变量、方法和类分别有什么作用
一、选择题
1、关于可变形参,以下说法正确的是()
A.一个方法允许传入无数个类型相同的参数
B.一个方法允许传入无数个类型不同的参数
C.一个方法允许定义无数个可变形参
D.可变形参可以放在形参列表的任何位置
参考答案:A
如果有多个参数,可变参数一定一定放在最后面,一个方法只能有一个可变参数
public void comp(int ... items){}
public void comp(int a,int b){}
Test t=new Test();
t.comp(1,2);[//]: # ()//优先调用参数个数定长的
t.comp(1,2,3);
2、以下说法错误的是()
A.使用new关键字产生对象会调用构造方法
B.静态块会在构造方法被调用之前执行且只执行一次
C.main方法不必产生对象即可被调用
D.使用new关键字产生对象会调用main方法 //其他方法
参考答案:D
静态代码块:static{}
实例化代码块:{}
先执行static{},后执行{},在执行构造方法
3、以下说法错误的是()
A.只要实例存在,成员变量即存在
B.成员变量有默认值
C.局部变量可以不赋值,在使用时会自动赋给默认值
D.成员变量与局部变量的生命周期是不同的
参考答案:C
成员变量系统默认初始化,局部变量必须自己初始化
4、关于重载以下说法错误的是()
A.普通方法,构造方法都可以重载
B.重载是同一个类当中多态的体现
C.重载要求形参的个数,类型,次序至少有一个不一样
D.重载要求返回值类型必须一至
参考答案:D
5、关于this说法错误的是()
A.访问变量时,变量前面可以用this
B.调用方法时,方法前面可以用this
C.this可以用在构造方法中
D.this可以用在静态块中
参考答案:D
类里面的静态方法不能访问类的非静态成员,在本类的方法中访问本类的其它成员用this,静态的方法是不用对象调用的,而是类名来访问,根本就没有对象存在,也就没有this引用了,便不能访问类里面的非静态成员,又因为类里面的静态成员是可以不用对象来访问的,所以类里面的静态方法只能访问类的静态的属性
6、关于static方法调用错误的是()
A.静态方法可以直接访问静态变量和静态方法
B.静态方法中,不能使用this关键字
C.static的类和方法优于对象之前加载
D.静态方法能直接访问普通成员变量或成员方法
参考答案:D
7、关于final,以下描述正确的是()
A.final修饰一个变量时,变量引用可变
B.final修饰一个变量时,变量内容可变
C.final修饰类的成员变量时,成员变量可以不在定义时初始化,而在构造函数中初始化
D.final修饰一个类的时候,该类的子类不能覆盖父类已实现的方法
参考答案:C
final是最终的,不可修改的,类不可继承
8、JAVA中,final修饰的类、成员方法、变量说法错误的是()
A.final修饰的类不能被继承
B.final修饰的方法不能被覆盖
C.final修饰的变量不能被修改
D.final修饰的变量不需要显示初始化
参考答案:D
9、final 和static 一块用描述错误的()
A.对于变量,一旦给定值,就不可以修改,并且通过类名可以访问
B.对于方法,表示不可覆盖,并且可以通过类名直接访问
C.被static final修饰后的方法和变量只能在方法内部使用
D.static final修饰的变量在对象实例化之前就已经存在
参考答案:C
10、关于抽象类叙述正确的是()
A.抽象类不能实现接口
B.抽象类必须有“abstract class”修饰
C.抽象类必须包含抽象方法
D.抽象类也有类的特性,可以被实例化
参考答案:B
abstract可以实现接口,接口是一种特殊的abstract类,抽象类中可以没有抽象方法,但抽象方法必须在抽象类中使用,抽象类不能被实例化,不能new对象
11、抽象类不具备的特征是()
A.用abstract修饰
B.它的抽象方法不能包含实现体
C.从它继承而来的子类,需要重载并实现它的各个抽象方法 重写
D.不能用new直接实例化
参考答案:C
12、抽象类和接口的区别,一下说法错误的是 ()
A.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的
B.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,接口可以实现多重继承
C.在abstract class 中可以有自己的成员变量,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员,所有的成员方法默认都是 public abstract 类型的
D.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法
参考答案:D
static 修饰的方法用类名调用,abstract修饰的方法没有具体的方法实现,不能直接调用,也就是说abstract不可以与static共存。jdk8接口中可以有静态方法,不能有静态代码块
13、关于static中继承、重载、重写以及加载时机说法错误的是()
A.java中static方法不能被覆盖
B.java中static class不能被继承
C.java中static方法不能被重载
D.java中static修饰的变量优于对象创建之前
参考答案:B.C
static不能重写,可以重载重新定义,可以重载,可以继承 java中static方法不能被重写但是能重定义_龍彧的博客-CSDN博客_static方法可以被重写吗
14、关于接口(jdk8)说法错误的是()
A.在接口中可以添加使用 default 关键字修饰的非抽象方法
B.接口里可以声明静态方法,并且可以实现
C.final可以修饰接口
D.接口中不可以存在构造方法
参考答案:C
15、下列关于内部类的说法错误的是()
A.内部类可以使用它所在类的静态成员变量和实例成员变量
B.内部类的类名只能在定义它的类或程序段中或在表达式内部匿名使用
C.内部类不可以用 abstract 修饰符定义为抽象类
D.内部类可作为其他类的成员,而且可访问它所在类的成员
参考答案:C
16、下列关于内部类说法正确的是()
A.内部类可以与包含它的类名相同
B.内部类只能使用其所在类的静态成员变量,不能使用其所在类的成员局部变量
C.内部类可以用abstract修饰定义为抽象类,不能用private或protected定义
D.外部使用内部类时,必须给出类的全名
参考答案:D
17、关于匿名内部类的说法错误的是()
A.匿名内部类中是可以定义构造方法的
B.匿名内部类中不能存在任何的静态成员变量和静态方法
C.匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法
D.使用匿名内部类时,我们必须是继承一个类或者实现一个接口
参考答案:A
匿名内部类不能有构造方法(因为匿名内部类没有类名)
匿名内部类不能定义任何静态成员、方法和类(因为匿名内部类是晚于外部加载的,但是匿名内部类和其对象几乎是同时加载的,但还是早于对象加载,而静态内容是属于类的,当类加载的时候就开始加载,所以匿名内部类中的静态会随之加载,会和对象创建冲突)
匿名内部类不能是abstract类(因为在创建匿名内部类时会立即创建匿名内部类的对象,从而克制匿名内部类必须实现他的抽象父类或接口里所包含的所有抽象方法)
匿名内部类不能是public、protected、private、static
只能创建匿名内部类的一个实例
一个匿名内部类一定是在new后面,用其隐含实现一个接口或者实现一个类
因为匿名内部是局部内部类,所以局部内部类的所有限制都对其生效
内部类只能访问外部类的静态变量或静态方法
匿名类中使用this,指的是匿名类或内部类本身,这是要访问外部类的变量和方法时,要加上外部类的类名
如果匿名内部类需要访问外部类的局部变量,则必须使用final修饰符来修饰外部类的局部变量,否则系统将报错。
18、关于匿名内部类说法错误的是()
A.匿名内部类就是一个没有名字的方法内部类
B.方法内部类不允许使用访问权限修饰符public、private、protected均不允许
C.方法内部类对外部完全隐藏,除了创建这个类的方法可以访问它以外,其他地方均不能访问
D.匿名内部类可以存在构造方法
参考答案:D
19、所有Java类都直接或间接继承了哪个类?( )
A.String B.Object C.Interesting D.Hero
参考答案:B
20、在JAVA中,Object类是所有类的父亲,用户自定义类默认扩展自Object类,下列选项中的( ) 方法不属于Object类的方法。
A.equals(Object obj) B.hashcode() C.toString() D.trim()
参考答案:D
trim()字符串方法去掉空格
21、下面有关Java异常处理模型的说法错误的是()
A.一个try块只能有一条catch语句
B.一个try块中可以不使用catch语句
C.catch块不能单独使用,必须始终与try块在一起
D.finally块不能单独使用,必须始终与try块在一起
参考答案:A
22、以下关于方法覆盖描述错误的是( )
A.覆盖的方法和被覆盖的方法必须具有完全相同的方法名、参数列表和返回类型
B.覆盖的方法的访问范围不能比被覆盖的方法访问范围小
C.覆盖的方法不能抛出被覆盖方法不能抛出的异常
D.被覆盖的方法不能被缺省修饰符修饰
参考答案:A.D
23、Java异常处理机制主要为了捕获( )错误,发生错误时,将引发异常,该异常由一个Java代码块捕获
A.编译期 B.运行期 C.测试期 D.调试期
参考答案:B
24、String类不能继承
25、关于构造方法的说法正确的是?()
A.一个类只能有一个构造方法
B.一个类可以有多个不同名的构造方法
C.构造方法与类同名
D.构造方法必须自己显示定义
参考答案:C
二、多选
1、现有以下代码:
interface W {
}
class Z implements W {
}
class X extends Z {
}
class Y extends Z {
}
下列哪些代码段是正确的?( )。
A.X x=new X(); Y y=new Y(); Z z=new Z(); y=(Y)x;
B. X x=new X(); Y y=new Y(); Z z=new Z(); x=(X)y;
C. X x=new X(); Y y=new Y(); Z z=new Z(); Z=(Z)x;
D. X x=new X(); Y y=new Y(); Z z=new Z(); W w=(W)x;
参考答案:C.D
2、请选择所有的正确答案( )。
A.在接口中定义的方法默认为private方法 public
B.在接口中定义的变量默认为public static final的
C.一个接口可以继承多个接口
D.关键字implements代表接口之间的继承关系 实现关系
参考答案:B.C
三、判断
1、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了类及其属性和方法的被访问范围,private修饰符则缩小了这种范围。 √
2、访问权限是private的变量,只能在本类和与本类同一个包中的其他类使用。 ×
3、Java中所有的变量,不管是成员变量还是局部变量,在使用前都必须进行初始化。 ×
4、Java语言为所有的Java程序自动导入包“java.lang”,因此Java程序可以直接用“java.lang”中的类和接口。 √
5、父类Person中定义了一个private void show()的方法,那么子类要重写这个方法时,方法的访问修饰符可以是默认的,protected或public。 ×
6、构造方法中,第一句话总是super。 ×
7、将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。 × 向上
8、抽象类和接口都不能实例化,都没有构造方法。 × 抽象类有构造方法
9、匿名内部类适合创建那种只需要使用一次的类,它可以实现一个或多个接口,或者继承一个父类。× 实现一个接口或继承一个父类
10、抽象方法的类必须是抽象类,同样抽象类也必须包含抽象方法。 ×
抽象类中不一定包含抽象方法
四、简答题
1、方法重载(overload)和重写(override)的区别
方法的重载和重写都是实现多态的方式,
区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。重载对返回类型没有特殊的要求。
重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。 方法重载的规则: 1.方法名一致,参数列表中参数的顺序,类型,个数不同。 2.重载与方法的返回值无关,存在于父类和子类,同类中。 3.可以抛出不同的异常,可以有不同修饰符。 方法重写的规则: 1.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。 2.构造方法和声明为 final 的不能被重写,声明为 static 的方法不能被重写但是能够被再次声明。 3.访问权限不能比父类中被重写的方法的访问权限更低。 4.重写的方法能够抛出任何非强制异常(非运行时异常),无论被重写的方法是否抛出异常。但重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以
2、final用于修饰变量、方法和类分别有什么作用
final关键字有最终的不可修改的含义。有三种用途,可以分别应用于变量、成员方法和类。
如果将某个变量修饰为final,那么该变量就成为常量,常量在声明时必须初始化,声明之后不能对其进行二次赋值。 如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,这就和抽象方法必须由子类实现的规定互相矛盾,因此,final和abstract不能同时修饰一个方法。 如果将某个类修饰为final,则说明该类无法被继承
方法的重载和重写都是实现多态的方式,
区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。重载对返回类型没有特殊的要求。
重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。 方法重载的规则: 1.方法名一致,参数列表中参数的顺序,类型,个数不同。 2.重载与方法的返回值无关,存在于父类和子类,同类中。 3.可以抛出不同的异常,可以有不同修饰符。 方法重写的规则: 1.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。 2.构造方法和声明为 final 的不能被重写,声明为 static 的方法不能被重写但是能够被再次声明。 3.访问权限不能比父类中被重写的方法的访问权限更低。 4.重写的方法能够抛出任何非强制异常(非运行时异常),无论被重写的方法是否抛出异常。但重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以
2、final用于修饰变量、方法和类分别有什么作用
final关键字有最终的不可修改的含义。有三种用途,可以分别应用于变量、成员方法和类。
如果将某个变量修饰为final,那么该变量就成为常量,常量在声明时必须初始化,声明之后不能对其进行二次赋值。 如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,这就和抽象方法必须由子类实现的规定互相矛盾,因此,final和abstract不能同时修饰一个方法。 如果将某个类修饰为final,则说明该类无法被继承
final关键字有最终的不可修改的含义。有三种用途,可以分别应用于变量、成员方法和类。
如果将某个变量修饰为final,那么该变量就成为常量,常量在声明时必须初始化,声明之后不能对其进行二次赋值。 如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,这就和抽象方法必须由子类实现的规定互相矛盾,因此,final和abstract不能同时修饰一个方法。 如果将某个类修饰为final,则说明该类无法被继承



