问答题【继承】
1.1 请问子类继承父类用什么关键字?
extends
1.2 请问子类继承父类的好处是什么?
1:可以提升代码的复用性;
2:子类对象可以直接使用父类非私有的属性和方法;
1.3 请问父类的哪些成员不能被子类继承,或者不能被直接访问?
私有的
1.4 请问子类是否可以同时继承多个父类?
不可以
问答题【抽象类】
4.1 请问定义抽象类、抽象方法使用的关键字是什么?
abstract
4.2 请问定义抽象类有什么作用?
1:可以作为设计模式使用;(例如:模板模式)
2:可以通过抽象类的抽象方法强制子类重写某些方法;
4.3 请问定义抽象方法有什么作用?
强制子类重写方法;
4.4 请问一个类继承了抽象类后,必须要做的事情是什么?
必须重写抽象类中的抽象方法,或者子类也是抽象类;
4.5 请问抽象类是否可以继承其它抽象类?
可以
问答题【接口】
2.1 请问子类实现接口使用什么关键字?
implements
2.2 请问子类实现接口后有什么要求?
必须重写接口中所有的抽象方法;(或者子类也是抽象类)
2.3 请问子类是否可以同时实现多个接口?
可以
2.4 请问子类是否可以在继承一个类的同时实现多个接口?
可以
2.5 请问接口是否可以继承一个或多个接口?
可以
问答题【final】
请写出final可以修饰的元素,并写出修饰后的含义。
修饰类,该类无法被其他类继承
修饰方法,该方法子类无法重写
修饰变量,该变量是自定义常量,基本数据类型数据值无法改变,引用数据类型地址值不能改变;
编程题【抽象类】
题目1:
我们计划为一所体育学校设计一套系统,需要记录以下人员的信息:
教练员:
属性:员工编号、姓名、性别、年龄
行为:吃饭(吃工作餐)
运动员:
属性:学员编号、姓名、性别、年龄、所在班级
行为:吃饭(吃营养餐)
参考答案:
/*
父类:
属性:员工编号、姓名、性别、年龄
行为:吃饭(吃的内容不确定)
*/
public abstract class Person {
private String id;
private String name;
private char sex;
private int age;
public abstract void eat();
public Person() {
}
public Person(String id, String name, char sex, int age) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
...... 省略了getter和setter方法
}
/*
注意构造方法不能继承,所以必须在子类中写构造方法,否则无法通过带参数构造方法创建对象
*/
public class JiaoLian extends Person {
@Override
public void eat() {
System.out.println("编号为:"+getId()+"的"+getAge()+"岁的"+getSex()+"教练"+getName()+"正在吃工作餐");
}
public JiaoLian() {
}
public JiaoLian(String id, String name, char sex, int age) {
super(id, name, sex, age);
}
}
/*
学生多一个班级属性
*/
public class Student extends Person {
private String className;
public Student() {
}
public Student(String id, String name, char sex, int age, String className) {
super(id, name, sex, age