努力经营当下,直至未来明朗!
普通小孩也要热爱生活!
一、选择
-
导出类/ 派生类调用基类的构造器必须用到的关键字( )
A: this B: final C: super D: static -
以下哪个接口的定义是正确的( )
A: interface B{ void print() { } ;}
B: interface B{ static void print() ;}
C: abstract interface B extends A1, A2{ abstract void print(){ };} //A1、A2为已定义的接口
D: interface B{ void print();} -
关键字super的作用是( )
A: 用来访问父类被隐藏的非私有成员变量
B: 用来调用父类中被重写的方法
C: 用来调用父类的构造函数
D: 以上都是 -
将下列(A、B、C、D)哪个代码替换下列程序中的【代码】不会导致编译错误( )
interface Com{
int M=200;
int f();
}
class ImpCom implements Com{
//【代码】
}
A: public int f(){ return 100+M;}
B: float f(){ return 100;}
C: public double f(){ return 2.6;}
D: public abstract int f()
- 默认类型等价表示是哪一项( )
public interface IService {String NAME="default";}
A: public String NAME=“default”;
B: public static String NAME=“default”;
C: public static final String NAME=“default”;
D: private String NAME=“default”;
二、编程
1. 子集
LeetCode78.子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
2. 组合
LeetCode77.组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。
答案
1. 选择
- 导出类就是子类/派生类,基类就是父类/超类。
① 子类继承父类时,如果父类用的系统默认的构造方法(无参构造方法),则子类不需要调用super关键字(应该说系统会隐式调用父类构造方法);
② 如果父类用的是自己生成的构造方法(复写系统默认的构造方法),则子类需要显式的在构造方法的第一行调用父类的构造方法 super。
③ 子类调用父类的构造器使用super(),放在子类构造方法的首行。
故:选C
- ① 接口中方法默认被public abstract修饰,抽象方法不可以有方法体{}。
② JDK8中,接口中的方法可以被default和static修饰,但被修饰的方法必须有方法体。
③ 接口的确是可以继承extends的,并且接口是可以多继承接口的。但C选项错误的原因和继承没关系。它错在抽象方法不可以有方法体。
参考:接口
故:选D
- ① super:代表的是当前对象内部的那一块特征,其主要作用是在子类方法中访问父类成员。
② super代表父类对应的对象,所以用super访问在子类中无法直接使用的父类成员和方法。
③ super不止能用来调用父类的构造函数,还能用来调用父类中那些被子类隐藏的变量和方法。所谓隐藏是指在子类中重新定义了父类的变量或方法。
④ 构造是不能被继承的。
故:选D
- ① 实现类必须实现接口中所有的方法。
在实现类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。
② 接口实现类相当于子类,子类的访问权限是不能比父类小的。
接口中所有方法默认都是public,而在实现类中,实现的类相当于子类,子类的访问权限是不能比父类小的;在java中一个类如果没有权限的修饰符,默认是default,其访问权限<public,所以在实现类中一定要写public。
故:选A
- ① 本题主要看代码中的interface,接口中的变量默认是public static final 的,方法默认是public abstract 的。
② NAME是String类型的变量,所以其默认的修饰符是public static final的。
故:选C
2. 编程
- 子集
- 组队