1. 请问子类继承父类用什么关键字?
继承使用 extends 关键字。
2. 请问子类继承父类的好处是什么?
提高了代码的复用性,
让类与类之间产生继承关系(多态的前提)。
3. 请问父类的哪些成员不能被继承,或者不能被访问?
父类中的构造方法不能被子类继承,
父类中的私有成员变量和成员方法能够被子类继承,只是无法直接访问,可以间接访问父类中的私有成员。
4. 请问子类是否可以同时继承多个父类?
不可以,Java 中的类只能单继承,但可以多层继承,Java 中所有的类都直接或间接继承了 Object 类。
class Person {
public Person() {
System.out.println("this:" + this);
}
}
class Student extends Person {
public Student() {
}
}
public class Demo1 {
public static void main(String[] args) {
new Student();
}
}
参考答案:
参考答案:
/**
* 电器
*/
public class ElectricalAppliance {
//成员变量
private String brand; //品牌
private String model; //型号
private String color; //颜色
private double price; //售价
//空参构造
public ElectricalAppliance() {
}
//全参构造
public ElectricalAppliance(String brand, String model, String color, double price) {
this.brand = brand;
this.model = model;
this.color = color;
this.price = price;
}
//getter & setter 略...
}
/**
* 冰箱
*/
public class Refrigerator extends ElectricalAppliance {
private String doorStyle; //门款式
private String refrigerationMode; //制冷方式
//空参构造
public Refrigerator() {
}
//全参构造
public Refrigerator(String brand, String model, String color, double price, String doorStyle, String refrigerationMode) {
super(brand, model, color, price);
this.doorStyle = doorStyle;
this.refrigerationMode = refrigerationMode;
}
//getter & setter 略...
}
/**
* 洗衣机
*/
public class WashingMachine extends ElectricalAppliance {
private String motorType; //电机类型
private String washingCapacity; //洗涤容量
//空参构造
public WashingMachine() {
}
//全参构造
public WashingMachine(String brand, String model, String color, double price, String motorType, String washingCapacity) {
super(brand, model, color, price);
this.motorType = motorType;
this.washingCapacity = washingCapacity;
}
//getter & setter 略...
}
/**
* 电视
*/
public class Television extends ElectricalAppliance {
private String screenSize; //屏幕尺寸
private String resolutionRatio; //分辨率
//空参构造
public Television() {
}
//全参构造
public Television(String brand, String model, String color, double price, String screenSize, String resolutionRatio) {
super(brand, model, color, price);
this.screenSize = screenSize;
this.resolutionRatio = resolutionRatio;
}
//getter & setter 略...
}
参考答案:
/**
* 动物
*/
public class Animal {
private int age; //年龄
public void move() {
System.out.println("动物会动...");
}
//空参构造、全参构造、getter、setter 略...
}
/**
* 鸟类
*/
public class Bird extends Animal {
//重写父类的方法
@Override
public void move() {
System.out.println("鸟在天上飞...");
}
//空参构造、全参构造、getter、setter 略...
}
/**
* 鹦鹉
*/
public class Parrot extends Bird {
}
/**
* 猫头鹰
*/
public class Owl extends Bird {
}
/**
* 喜鹊
*/
public class Magpie extends Bird {
}
/**
* 哺乳类 继承动物类
*/
public class Mammal extends Animal {
//重写父类的方法
@Override
public void move() {
System.out.println("哺乳动物拥有快速运动的能力...");
}
//自己特有的方法
public void nervousSystem() {
System.out.println("哺乳动物拥有发达的神经系统...");
}
//空参构造、全参构造、getter、setter 略...
}
/**
* 大象 继承哺乳类
*/
public class Elephant extends Mammal {
}
/**
* 狼 继承哺乳类
*/
public class Wolf extends Mammal {
}
长颈鹿类
/**
* 长颈鹿 继承哺乳类
*/
public class Giraffe extends Mammal {
}
爬行动物
/**
* 爬行类 继承动物类
*/
public class Reptile extends Animal {
//重写父类的方法
@Override
public void move() {
System.out.println("爬行动物都在地表爬行...");
}
//自己特有的方法
public void ectotherm() {
System.out.println("爬行动物没有体温调节能力...");
}
//空参构造、全参构造、getter、setter 略...
}
/**
* 鳄鱼 继承爬行类
*/
public class Crocodile extends Reptile {
}
/**
* 蛇 继承爬行类
*/
public class Snake extends Reptile {
}
/**
* 乌龟 继承爬行类
*/
public class Tortoise extends Reptile {
}
1. 请问定义抽象类、抽象方法使用的关键字是什么?
定义抽象的关键字是 abstract
2. 请问定义抽象类有什么作用?
抽象类的作用是为了被子类继承,体现的是模板思想。
3. 请问定义抽象方法有什么作用?
抽象方法只有方法签名,没有方法体,需要被子类重写,起到了“规范”的作用。
4. 请问一个类继承了抽象类后,必须要做的事情是什么?
继承抽象类后,必须要重写抽象类中的抽象方法。
5. 请问抽象类是否可以继承其它抽象类?
抽象类可以继承其他的抽象类,继承其他抽象类后,可以选择性的重写父类中的抽象方法。
参考答案:
/**
* 人员类
*/
public abstract class Person {
private String id; //编号
private String name; //性别
private String gender; //性别
private int age; //年龄
//空参构造
public Person() {
}
//全参构造
public Person(String id, String name, String gender, int age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
//吃饭(抽象方法)
public abstract void eat();
//getter、setter 略...
}
/**
* 教练员 继承人员类
*/
public class Coach extends Person {
//空参构造
public Coach() {
}
//全参构造
public Coach(String id, String name, String gender, int age) {
super(id, name, gender, age);
}
//重写父类中的抽象方法
@Override
public void eat() {
System.out.println("教练员吃工作餐...");
}
//getter、setter 略...
}
/**
* 运动员 继承人员类
*/
public class Athletes extends Person {
//特有属性
private String className; //所在班级名称
//空参构造
public Athletes() {
}
//全参构造
public Athletes(String id, String name, String gender, int age, String className) {
super(id, name, gender, age);
this.className = className;
}
//重写父类中的方法
@Override
public void eat() {
System.out.println("运动员吃营养餐");
}
//getter、setter 略...
}
原文链接:https://qwert.blog.csdn.net/article/details/105336764