Q8:JavaSE面向对象相关题目
JavaSE面向对象相关题目
-
己知如下Java类定义:
class Base{
public Base(){…}
public void fun(int n){…}
}
public class Child extends Base{
//member methods
}
如下哪句可以正确地被加入Child类中(D)
A) pr:ivate void fun(int n) {. . . }
B) void fun(int n) {… }
C) protected void fun(int n) {…}
D) public void fun(int n) {…} -
若类A仅在其方法Methodl中定义并使用了类B的一个对象,类A其他部分的代码都不涉及类B,那么类A与类B的关系应为(B);若类A的某个属性是类B的一个对象,并且类A对象消失时,类B对象也随之消失,则类A与类B的关系应为 ( D )。
A)关联
B)依赖
C)聚合
D)组合 -
Java中实现多态的机制是什么?
- 依靠父类或接口的引用指向子类,从而实现了一个对象多种形态的特性。在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法。
-
面向对象编程的三个基本特征: 封装 、 继承 、 多态 。
-
关于面向对象的基本原则描述如下,请任选三条进行简单解释。
-
S:Single Responsibility Principle - SRP(单一职责原则)
-
O:Open-Closed Principle - OCP(开放封闭原则)
-
L:Liskvo Substitution Principle - LSP(里氏替换原则)
-
I:nterface Segregation Principle - ISP(接口隔离原则)
-
D:Dependency Inversion Principle - DIP(依赖倒置原则)
-
-
下列哪一种叙述是正确的() D
A、 abstract修饰符可修饰字段、方法和类
B、 抽象方法的body部分必须用一对大括号{)包住
C、 声明抽象方法,大括号可有可无
D、 声明抽象方法不可写出大括号 -
下面关于继承的哪些叙述是正确的。a
A、 在java中类只允许单一继承。
B、 在java中一个类只能实现一个接口。
C、 在java中一个类不能同时继承一个类和实现一个接口。
D、 Java的单一继承使代码更可靠 -
下列哪种说法是正确的()d
A、 实例方法可直接调用超类的实例方法
B、 实例方法可直接调用超类的类方法
C、 实例方法可直接调用其他类的实例方法
D、 实例方法可直接调用本类的实例方法
|9. 抽象类和接口的区别。
abstract class | interface | |
---|---|---|
属性 | 不用限制 | public静态常量 |
构造方法 | 可有可无 | 没有 |
普通方法 | 可以有具体方法 | 必须是public抽象方法 |
子类 | 单一继承 | 多重实现(接口继承接口时为多重继承) |
静态方法 | 有 | 没有 |
- 请简单描述抽象、继承、封装、多态。
-
抽象:只声明行为接口(方法签名)而不完成具体的实现。
-
继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。一个新类可以从现有的类中派生,这个过程称为类继承,新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类),派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要
-
封装:属性私有化,提供公共的方法来访问私有属性getter、setter
-
多态:允许不同类的对象对同一消息做出不同的反应
- 以下()不是Object类的方法 a
A) hasNext()
B) finalize()
C) toString()
D) clone()
12. 以下对重载描述错误的是()d
A) 构造方法不能重载
B) 方法重载只能发生在一个类的内部.
C) 重载要求方法名相同,参数列表不同
D) 方法的返回值类型不是区分方法重载的条件
-
接口和抽象类描述正确的有(多选)BCD
A) 抽象类没有构造函数
B)接口中的方法可以有方法体 jdk1.8后
C) 抽象类不允许多继承
D) 接口没有构造函数 -
能用来修饰interface的有( )b
A.private B.public C.protected D.static -
在使用super 和this关键字时,以下描述正确的是()d
A) this()和super()可以在static环境中使用,包括static方法和static语句块
B) super()和this()不一定要放在构造方法内第一行
C) this()和super()可以同时出现在一个构造函数中
D) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 -
以下对封装的描述正确的是()d
A) 只能对一个类中的方法进行封装,不能对属性进行封装
B) 封装的意义不大,因此在编码时尽量不要使用
C)如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用
D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性 -
以下说法错误的是b
A) super()方法可以调用父类的所有非私有方法
B) this和super关键字可以出现在同一个构造函数中
C) super.属性可以调用父类的所有非私有属性
D) super()可以调用父类的所有非私有构造函数. -
Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
-
在Java中,以下关于方法重载和方法重写描述正确的是()。d
A、方法重载和方法重写实现的功能相同
B、方法重载出现在父子关系中,方法重写是在同一个类中
C、方法重载的返回类型必须一致,参数必须不同
D、方法重写的返回值类型必须相同(或是其子类) -
接口是Java面向对象的实现机制之一,以下说法正确的是?b
A Java支持多重继承,一个类可以实现多个接口。
B Java只支持单重继承,一个类可以实现多个接口。
C Java只支持单重继承,一个类只可以实现一个接口。
D Java支持多重继承,但一个类只可以实现一个接口。 -
下列关于interface的说法正确的是?d
A interface中可以有private方法。
B interface中可以有final方法。
C interface中可以有function实现。
D interface可以继承其他interface。 -
关于Java中的继承,以下说法正确的有()bc
A Java支持单继承和多重继承
B Java只支持单继承,不支持多重继承
C Java中的类最多只有一个直接父类,或者没有父类
D Java中的每个类都有一个直接父类,而且只有一个直接父类 -
什么是面向接口编程?面向接口编程有什么好处?试举一个你在开发中使用面向接口的编程的例子?
-
下列哪一种叙述是正确的d
A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{}包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号 -
为了使模块尽可能独立,要求()b
A. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 -
关于继承,以下说法正确的是: ( )a d
A. Java中只支持单继承,一个类只能继承一个类,但是可以有多个子类
B. 一个类如果没有自己写无参构造方法,那么子类将无法继承
C. 子类可以当父类用,父类不可以当子类用
D. 子类重写父类方法时访问权限不能更低 -
下列选项中,用于在定义子类时声明父类名的关键字是()c
(A) interface (B) package © extends (D) class -
Java语言的类间的继承关系是( )b
(A) 多重的 (B) 单重的 © 线程的 (D) 不能继承 -
现有两个类A、B,以下描述中表示B继承自A的是( )d
(A) class A extends B (B) class B implements A
© class A implements B (D) class B extends A -
下列类定义中哪些是合法的抽象类定义( )c
(A)abstract Animal{abstract void growl();}
(B)Class abstract Animal{abstract void growl();}
©abstract class Animal{ abstract void growl();}
(D)abstract class Animal{abstract void growl(){System.out.println(“haha”);};} -
若在某一个类定义中定义有如下的方法:abstract void performDial();该方法属于( )c
(A)接口方法 (B)最终方法 ©抽象方法 (D)空方法 -
如果类C1继承自类C2,并实现了接口I1,而类C2实现了接口I2,请挑出下面代 码的错误的部分:( )b
(A) C2 instance = new C1();
(B) C1 instance = new C2();
© I1 instance = new C1();
(D) I2 instance = new C1(); -
A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:
A a0 = new A();
A a1 = new B();
A a2 = new C();
问以下哪个说法是正确的?( )d
(A) 只有第1行能通过编译
(B) 第1、2行能通过编译,但第3行编译出错
( C)第1、2、3行能通过编译,但第2、3行运行时出错
(D) 第1行、第2行和第3行的声明都是正确的 -
在JAVA中,Object类是所有类的父亲,用户自定义类默认扩展自Object类,下列选项中的( )方法不属于Object类的方法。ad
(A)equals(Object obj)
(B)getClass()
©toString()
(D)trim() -
下列程序的输出结果是( )b
interface Number{
final String str = “Hello world”;
}
public class HelloWorld implements Number{
Public static void main(String [] args){
System.out.println(str);
}
}
(A) 编译错误
(B) 输出Hello world
© 什么都不输出
(D) 输出str
-
下面那几个函数是 public void example(…)的重载函数?A
A. public vold example(int m) { …}
B. public int example (){…}
C. public int example 2(){…}
D. public int example (int m,float f){…} -
Java中实现多态的机制是什么?
-
下面那个函数是public void aMethod(){…}的重载函数?Bd
A、 void aMethod( ){…}
B、 public int aMethod(int a, float b){…}
C、 public void aMethod (){…}
D、 public float aMethod (int m){…} -
以下对重载描述错误的是( )a
A. 构造方法不能重载
B. 方法重载只能发生在一个类的内部
C. 重载要求方法名相同,参数列表不同
D. 方法的返回值类型不是区分方法重载的条件 -
关于接口以下说法不正确的有( )c
A. 接口是抽象的最高境界。 B. 接口提供了方法的定义。
C. 接口中的方法都是public的。 D. 实现接口必须实现接口中的一个方法 -
在使用super 和this关键字时,以下描述正确的是( )d
A. super()和this()不一定要放在构造方法的第一行
B. this()和super()可以同时出现在一个构造函数中
C. this()和super()可以在static环境中使用,包括static方法和static语句块
D. 在子类构造方法中使用super()显式调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 -
以下描述正确的有( )b
A. abstract可以修饰类、接口、方法、变量
B. abstract修饰的类主要用于被继承
C. 声明抽象方法,大括号可有可无
D. abstract修饰的类,其子类也必须是abstract修饰的 -
关于java中继承的特点,以下说法正确的是( )b
A. 使类的定义复杂化
B. Java只支持单继承,不支持多继承,但可以通过接口实现多继承的目的
C. 子类继承父类的所有成员变量和方法,包括父类的构造方法
D. 不可多层继承,即一个类不可以继承一个类的子类 -
构造器constructor可以进行下列哪些操作()b
A. 被继承
B. 被重载
C. 被重写
D. 被注入 -
下列哪些是错误的()B
A. 抽象类可以有构造方法,接口中不能有构造方法
B. 抽象类中不能有普通成员变量,接口中可以有普通成员变量
C. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法
D. 抽象类中可以包含静态方法,接口中不能包含静态方法 -
下列哪种说法是错误的()d
A. 接口可以继承接口
B. 具体类可以继承多个抽象类
C. 抽象类是不可继承具体类
D. 抽象类可以实现多接口 -
关键字super的作用是?d
A、 用来调用父类的构造函数
B、 用来访问父类被隐藏的成员变量
C、 用来调用父类中被重载的方法
D、 以上都是 -
下面不是面向对象技术特点的是?a
A、 模块化
B、 封装
C、 继承
D、 多态