-
2021-11-13 12:12:00
Rectangle.java
/** * 任务:定义一个矩形 Rectangle 类,继承 Shape 类, * 在这个类中分别定义一个名为 area 的方法,实现计算该形状面积的功能。 * 类名为:Rectangle */ // 定义一个Rectangle的公开类,并继承Shape类 class Rectangle extends Shape{ // 定义一个area方法,实现计算矩形面积的功能。 double area(){ double H=getHeight(); double W=getWidth(); return H*W; } }
Triangle.java
/** * 任务:定义一个三角形 Triangle 类,继承 Shape 类, * 在这个类中分别定义一个名为 area 的方法,实现计算该形状面积的功能。 * 类名为:Triangle */ // 定义一个Triangle的公开类,并继承Shape类 class Triangle extends Shape{ // 定义一个area方法,实现计算三角形面积的功能。 double area(){ double H=getHeight(); double W=getWidth(); return 0.5*H*W; } }
Shape.java
public class Shape { private double height; //该图形的高 private double width; // 该图形的底边 public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } }
更多相关内容 -
学习-Java继承和多态之子类继承性
2021-06-27 09:38:58第1关:学习-Java继承和多态之子类继承性 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性,并定义获取和设置性别属性的...第1关:学习-Java继承和多态之子类继承性
任务描述
本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性,并定义获取和设置性别属性的方法和 sleep 方法。
相关知识
继承是 Java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
图 1
如上图 1 所示,动物继承生物类,老虎又继承动物类。从这个例子中可以明显看出:越往上的类越抽象,越往下的类越具体。而在我们在设计的时候,父类也往往是比较抽象的类。接下来我们来看看如何使用继承。
类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
class 父类 {
}
class 子类 extends 父类 {
}
例子:
class Animal {
}
class Tigger extends Animal {
}
表示的就是 Tigger 类继承了 Animal 类,我们可以说 Tigger 是 Animal 的子类,也可以说 Animal 是 Tigger 的超类或父类。Tigger 会继承 Animal 的域和方法,也就是说 Tigger 的实例对象可以调用 Anaimal 的方法和属性。
事实上,我们每创建出一个类,都会隐式地继承根类 Object。这也就解释了为什么我们创建的新类,在实例化它之后我们就能调用 equals、getClass 等方法。比如 Animal 就隐式地继承了 Object 类。
那为什么要使用继承呢?
我们现在来看一个例子:
class Anaimal {
private String type; // 动物种类
private int age; // 年龄
// 设置和获取动物属性
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Tigger {
private String name; // 老虎名称
private int age; // 老虎年龄
private String type; // 老虎种类
// 设置和获取老虎属性
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
从这两段代码可以看出来,代码存在重复了,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),要从根本上解决这两段代码的问题,就需要使用继承。
这个 Animal 类就可以作为一个父类,然后 Tigger 类继承这个类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,便于后期维护,代码也更加简洁,提高了代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码) ,使用继承的代码如下:
class Anaimal {
private String type;
private int age;
public Anaimal(String type, int age) {
this.type = type;
this.age = age;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
// 老虎类继承动物类
class Tigger extends Anaimal{
// 定义自己的名称属性
private String name;
// 如果子类没有覆盖父类的构造方法则默认调用父类的构造方法
public Tigger(String type, int age) {
super(type, age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Tigger tigger = new Tigger("老虎",18);
tigger.setName("旺财");
System.out.printf("动物品种:%s\t名称:%s\t年龄:%d",tigger.getType(),tigger.getName(),tigger.getAge());
}
}
执行结果:
动物品种:老虎 名称:旺财 年龄:18
继承的特性:
- 子类拥有父类非 private 的属性、方法,实现了代码复用;
- 本质上来说子类会继承父类的所有属性(包括 private),只是私有属性和方法无法直接使用;
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
- 子类可以用自己的方式实现父类的方法,即重写/覆写(Override);
- Java 的类继承是单继承,不支持多继承,单继承就是一个子类只能继承一个父类,但是一个父类可以被多个子类继承,而子类却不可以继承多个父类;
- 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
开始你的任务吧,祝你成功!
/** * 任务:定义一个 Dog 类,继承 Animal 类,定义自己的性别属性,并定义获取和设置性别属性的方法和 sleep 方法。 * 类名为:Dog */ // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码 /********** Begin **********/ // 定义一个Dog的公开类,并继承Animal类 public class Dog extends Anaimal{ //定义小狗的性别sex,字符串类型 private String sex; // 定义获取和设置小狗性别的方法。 public String getSex(){ return sex; } public void setSex(String sex){ this.sex=sex; } public Dog(String type,String name,int age){ super(type,name,age); } //定义小狗的睡觉方法,实现输出:一只名为xx性别为xx的小狗,现在xx岁,它正在睡觉 public void sleep(){ System.out.printf("一只名为%s性别为%s的小狗,现在%d岁,它正在睡觉",this.getName(),sex,this.getAge()); } } /********** End **********/
public class Anaimal { private String type; private String name; private int age; public Anaimal(String type, String name, int age) { this.type = type; this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
-
Educoder-学习-Java继承和多态之子类继承性
2021-12-03 21:38:52父类属性和方法的继承 面向对象传参机制 get()和set()方法的使用 public class Dog extends Animal{ //继承父类 private String sex; public String getSex(){ return sex; } public Dog(String type, ...类的继承还是有点绕的,多用用才行
掌握知识点
- super关键字的使用语法
- extends的使用语法
- 类的继承
- 父类属性和方法的继承
- 面向对象传参机制
- get()和set()方法的使用
public class Dog extends Animal{ //继承父类 private String sex; public String getSex(){ return sex; } public Dog(String type, String name, int age){ super(type,name,age); //继承父类属性 } public void setSex(String sex){ this.sex = sex; } public void sleep(){ System.out.print("一只名为" + super.getName() + "性别为" + sex + "的小狗,现在" + super.getAge() + "岁,它正在睡觉"); //调用父类getName方法 } }
-
Educoder-练习-Java继承和多态之子类继承性(2)
2021-12-03 22:53:30继承性 通关源码 public class Triangle extends Shape{ // 定义一个area方法,实现计算矩形面积的功能。 public double area(){ double s = this.getHeight() * this.getWidth() * 0.5; return s; } } ...要歇歇了,感觉有点疯
掌握知识点
- 继承性
通关源码
public class Triangle extends Shape{ // 定义一个area方法,实现计算矩形面积的功能。 public double area(){ double s = this.getHeight() * this.getWidth() * 0.5; return s; } }
public class Rectangle extends Shape{ // 定义一个area方法,实现计算矩形面积的功能。 public double area(){ double s = this.getHeight() * this.getWidth(); return s; } }
-
练习-Java继承和多态之子类继承性(2-1)
2022-02-10 19:13:02本关任务:定义一个矩形 Rectangle 类和 三角形 Triangle 类,都继承 Shape 类,在这两个类中分别定义 一个名为 area 的方法,实现计算该形状面积的功能(Shape 类已经定义完成,可以在 Shape.java 文件查看相应代码... -
Java继承和多态之子类继承性-2
2021-11-13 12:16:45* 任务:定义一个 Dog 类,继承 Animal 类,定义自己的性别属性,并定义获取和设置性别属性的方法和 sleep 方法。 * 类名为:Dog */ // 定义一个Dog的公开类,并继承Animal类 class Dog extends Animal{ //定义... -
练习-Java继承和多态之子类继承性(Educoder实训)
2021-10-29 19:28:52本关任务:定义一个矩形 Rectangle 类和 三角形 Triangle 类,都继承 Shape 类,在这两个类中分别定义 一个名为 area 的方法,实现计算该形状面积的功能(Shape 类已经定义完成,可以在 Shape.java 文件查看相应代码... -
学习-Java继承和多态之子类对象特点
2021-06-27 09:55:48第1关:学习-Java继承和多态之子类对象特点 任务描述 相关知识 子类对象的特点 instanceof 运算符 编程要求 测试说明 任务描述 本关任务:使用 instanceof 运算符判断所指对象是否为特定类的一个... -
Java继承和多态——子类继承性
2022-04-25 15:55:01在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 { } class 子类 extends 父类 { } 例子: class Animal { } class Tigger extends Animal { } 表示的... -
继承和多态
2014-05-06 10:54:59Java面向对象编程的三大范式,封装,继承,多态,对初学者学习Java,认识Java提供了很好的参考 -
头歌实践-Java继承与多态
2021-10-28 19:18:19头歌实践作业第1关:练习-Java继承和多态之final关键字第2关:学习-Java继承和多态之对象类型的转换任务描述相关知识向上转型向下转型编程要求第3关:练习-Java继承和多态之方法重载任务描述编程要求第4关:练习-... -
【Java】第8章 JAVA继承和多态 头歌Educoder实训作业(八)
2021-11-13 11:44:22第1关:学习-Java继承和多态之子类继承性 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性,并定义获取和设置性别属性的方法和 sleep 方法。 相关知识 继承是 Java ... -
java继承和多态的学习
2019-05-26 17:00:00面向对象的三大特征:封装性、继承性、多态性。 继承是多态的前提,如果没有继承就没有多态 继承主要解决的问题就是:共性抽取 继承关系当中的特点:1、子类可以拥有父类的内容2、子类还可以拥有自己专有的内容。 ... -
头歌--Java面向对象 - 封装、继承和多态
2022-04-10 00:46:15头歌实践--Java面向对象 - 封装、继承和多态 -
java继承和多态
2021-10-08 21:38:20继承和多态 文章目录继承和多态继承多态 继承 多态 -
学习-Java继承和多态之final关键字
2021-06-27 09:45:34第1关:学习-Java继承和多态之final关键字 任务描述 相关知识 final 关键字的使用 final 关键字修饰类、成员变量和成员方法 编程要求 测试说明 任务描述 本关任务:调试代码,对代码进行增添、删除和修改... -
java 实验 继承与多态rectAngle 定义矩形类源代码
2009-10-16 21:30:43java 实验 继承与多态rectAngle 定义矩形类,用户输入矩形的长与宽,程序计算其面积和周长;派生子类正方形类,定义一个接口Printable源代码 -
Java继承和多态
2019-10-24 11:37:21Java的继承和多态 继承 1.子类可以从父类继承属性和方法 2.子类的继承性 (1)子类和父类在同一个包中 父类中除private定义的变量或方法均可继承 (2)子类和父类不在同一个包中 子类继承了public 和... -
java三大特性之继承和多态
2013-09-23 23:43:041. 继承 表示拥有主要特征有: a) 能够实现代码的高效复用;...b) java里只可以是单继承的, 也就是说一个类只能继承一个父类; c) 被继承的类成为成为父类,也成超类,而继承的类被称为子类,也成为 -
Java继承与多态(多态篇)
2022-05-17 10:12:43写在前面: 博主主页:戳一戳,欢迎大佬指点! 博主秋秋:QQ:1477649017 欢迎志同道合的...多态一,多态概念二,多态的实现条件2.1,向上转型2.2,重写父类方法2.3,通过父类引用调用重写的方法2.4,整体代码三,向.. -
Java 继承与多态的深入理解
2020-08-29 18:32:25主要介绍了Java 继承与多态的深入理解的相关资料,子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为,需要的朋友可以参考下 -
Java继承与多态
2022-03-27 07:58:57继承(inheritance):它是Java程序设计中的一项核心技术。它的基本思想是可以基于已有的类创建新的类,继承已存在的类就是复用这些类的方法,而且可以增加一些新的方法和字段,使类能够适应新的情况。 如何使用... -
java中的继承和多态
2021-02-28 16:44:33子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类... -
Educoder–Java 第1关:学习-Java继承和多态之方法重写
2020-06-29 22:20:06文章目录任务描述相关知识...重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。 子类可以根据需要,定义自 -
Java中的封装、继承、多态
2021-10-23 10:14:49封装继承多态是java面向对象中的三大特性,关于这三个特性具体有什么作用,能干什么,我们一起来探讨一下,如有语言形容不清楚,或者表达不准确,欢迎留言。 一、封装 1、封装是什么:官方来讲就是隐藏对象的属性...