头歌实践作业

  • 第1关:练习-Java继承和多态之final关键字
  • 第2关:学习-Java继承和多态之对象类型的转换
    • 任务描述
    • 相关知识
      • 向上转型
      • 向下转型
    • 编程要求
  • 第3关:练习-Java继承和多态之方法重载
    • 任务描述
    • 编程要求
  • 第4关:练习-Java继承和多态之方法重写
    • 任务描述
    • 编程要求

第1关:练习-Java继承和多态之final关键字

/*** 按照代码文件中提供的注释完成 Demo 类的编写,使得程序正常输出。*/
class DemoTest{int i = 10;
}
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********* Begin *********/// 将Demo类改为 final形式
final class Demo{// 定义一个final、static常量,名为PI,值为3.14final static double PI=3.14;// 声明一个final类型的DemoTest对象,命名为demoTestfinal DemoTest demoTest = new DemoTest();//这里声明时应该初始化// 声明一个不为final类型的DemoTest对象,命名为demoTest2DemoTest demoTest2;// 声明一个final型的数组,类型为int,值为 1,2,3,命名为afinal int []a=new int[]{1,2,3};// 删除主函数中错误的代码,使得程序能够正确输出public static void main(String[] args) {Demo demo = new Demo();//demo.demoTest = new Test();//demo.PI = 20;//final变量一经定义赋值则不可以改变System.out.println(demo.PI);demo.demoTest2 = new DemoTest();System.out.println(demo.demoTest2.i);for (int i = 0; i < demo.a.length; i++){demo.a[i] = 9;System.out.println(demo.a[i]);}}
}
/********** End **********/

第2关:学习-Java继承和多态之对象类型的转换

任务描述

本关任务:使用对象类型的转换,根据编程提示,完成猫类和动物类的转换,以及彼此方法和属性的调用。

相关知识

在之前的学习任务中,我们学习了基本类型之间的转换,这里我们来为大家介绍对象间的类型转换。

Java 语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。如果把引用类型转换为子类类型,则称为向下转型;**如果把引用类型转换为父类类型,则称为向上转型。**注意:两者必须为父子关系。

向上转型

把子类对象赋值给父类类型的变量(隐式转换,不用进行强制类型转换),被称为向上转型。

本质:父类的引用指向了子类的对象。

语法:

父类类型 引用名 = new 子类类型() ;

例如:狗是动物的一种,那么也可以将狗看成一个动物对象。

class Animal{public void info(){System.out.println("我是动物");}
}
class Dog extends Animal{public void eat(){System.out.println("狗在吃东西");}public static void main(String[] args) {Animal animal = new Dog(); // 向上转型animal.info();}
}

执行结果:

我是动物

狗对象可以调用该方法,那么同样猫也可以调用该方法,这就做到了在父类中定义一个方法可以完成各个子类的功能。由于向上转型是一个从较具体类到较抽象类的转换,所以它总是安全的,因为我们可以说狗是动物,但是不能说动物是狗。

向上转型的特点如下:

  1. 向上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能);

  2. 向上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法;

  3. 如果子类重写了父类的某个方法后,当对象的向上转型对象调用这个方法时一定是调用了这个重写的方法,因为程序在运行时知道,这个向上转型对象的实体是子类创建的,只不过损失了一些功能而已。

向下转型

向下转型是指子类引用父类对象,就是将父类对象能转换成子类对象,这时需要满足两个条件:一是必须执行强制类型转换;二是必须确保父类对象是子类的一个实例,否则抛出异常。

语法:

子类类型 引用名 = (子类类型)父类引用;

class Animal{public void info(){System.out.println("我是动物");}
}
class Dog extends Animal{public void eat(){System.out.println("狗在吃东西");}public static void main(String[] args) {Animal animal = new Dog(); // 向上转型Dog animal1 = (Dog) animal; // 向下转型animal1.eat();}
}

执行结果:

狗在吃东西

向下转型的特点如下:

  1. 向下转型对象可以操作父类及子类成员变量和成员方法;

  2. 向下转型对象访问重写父类的方法时,操作的是子类的方法;

  3. 向下转型必须进行强制类型转换;

  4. 向下转型必须保证父类对象引用的是该子类的对象,如果引用的是父类的其他子类对象,会抛出类型不匹配异常。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中完成猫类和动物类的转换,以及彼此方法和属性的调用,具体要求如下:

把猫类对象赋值给动物类;
将动物类引用转换为猫类对象;
输出 Animal 类的 name 变量;
输出 Animal 类的 staticName 变量;
输出 Cat 类的 eat() 方法;
输出 Animal 类的 staticEat() 方法;
调用 Cat 类的 str 变量;
调用 Cat 类的 eatMethod() 方法。

/*** 使用对象类型的转换,根据编程提示,完成猫类和动物类的转换,以及彼此方法和属性的调用*     把猫类对象赋值给动物类;将动物类引用转换为猫类对象;输出 Animal 类的 name 变量;输出 Animal 类的 staticName 变量;输出 Cat 类的 eat() 方法;输出 Animal 类的 staticEat() 方法;调用 Cat 类的 str 变量;调用 Cat 类的 eatMethod() 方法。*/// 定义动物类
class Animal{// 定义动物类的属性public String name = "动物";public static String staticName = "可爱的动物";// 定义动物类的行为方法public void eat() {System.out.println("动物吃饭");}public static void staticEat() {System.out.println("可爱的动物正在在吃饭");}
}
// 定义猫类,该类继承动物类
public class Cat extends Animal{// 定义猫类的属性public String name = "猫";public String str = "可爱的小猫";public static String staticName = "我是喵星人";// 定义猫类的行为方法public void eat() {System.out.println("猫吃饭");}public static void staticEat() {System.out.println("喵星人在吃饭");}public void eatMethod() {System.out.println("猫喜欢吃鱼");}public static void main(String[] args) {// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码/********* Begin *********/// 向上转型,把猫类对象赋值给动物类Animal animal =new Cat();// 向下转型,将动物类引用转换为猫类对象Cat cat2=(Cat) animal;// 输出Animal类的name变量System.out.println(animal.name);// 输出Animal类的staticName变量//直接通过类名访问静态变量System.out.println(Animal.staticName);// 输出Cat类的eat()方法animal.eat();// 输出Animal类的staticEat()方法Animal.staticEat();// 调用Cat类的str变量System.out.println(cat2.str);// 调用Cat类的eatMethod()方法cat2.eatMethod();/********** End **********/}
}

第3关:练习-Java继承和多态之方法重载

任务描述

本关任务:定义名为 print 的静态方法,携带一个参数,无论该参数是 int 型、double 型还是字符串型,都可以将该参数进行打印。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。


/*** 任务:定义名为 print 的静态方法,携带一个参数,* 无论该参数是 int 型、double 型还是字符串型,都可以将该参数进行打印。*/
public class Print {// 请在下面的Begin-End之间编写正确的代码/********** Begin **********/static void print(int num) {System.out.println(num);}static void print(double num) {System.out.println(num);}static void print(String str) {System.out.println(str);}public static void main(String []args) {Print.print(16);Print.print(16.0);Print.print("16");}/********** End **********/
}

第4关:练习-Java继承和多态之方法重写

任务描述

本关任务:计算球的表面积。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。

/*** 重写 Shape 中的 area 方法,计算球的表面积。*/class Shape {private double r; //球的半径// 球的体积public double area(){double s = (double)3/4*Math.PI*Math.pow(r,3);return s;}
}
public class Sphere extends Shape{private double r; //球的半径public Sphere(double r) {this.r = r;}// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码/********* Begin *********/// 重写 Shape 中的 area 方法,计算球的表面积,将计算结果返回public double area(){double s = (double)4*Math.PI*Math.pow(r,2);return s;}public static void main(String []args) {Sphere sphere=new Sphere(2);System.out.println("球的表面积是:"+sphere.area());}/********** End **********/
}

头歌实践-Java继承与多态相关推荐

  1. 头歌实践-Java集合类之Set的HashSet之常用方法的使用

    头歌实践-Java集合类Set的HashSet之常用方法 1.任务描述 2.相关知识 3.Set集合 3.1 什么是 HashSet 集合 3.2 创建 HashSet 集合 3.3 HashSet ...

  2. 头歌实践教学平台答案(Java实训作业答案)

    搜集整理了一份最新最全的头歌(EduCoder)Java实训作业答案,分享给大家.(EduCoder)是信息技术类实践教学平台.(EduCoder)涵盖了计算机.大数据.云计算.人工智能.软件工程.物 ...

  3. linux操作系统中的shell编程----基于头歌实践教学编写shell脚本测试结果

    一.前言 今天,又要使用我的大学技能-写实验报告.linux操作系统课程实验课到了尾声,这是最后一次linux操作系统实验报告,我喜极而泣. 行了,废话不多说,我直接开始肝!!本实验是基于基于头歌实践 ...

  4. 头歌Educoder——Java高级特性 - JDBC(上)

    第1关:JDBC连接数据库 任务描述 本关任务:使用jdbc连接数据库并完成创建数据库和创建表的操作. 相关知识 JDBC API提供以下接口和类: DriverManager:此类管理数据库驱动程序 ...

  5. 学习-Java继承和多态之子类继承性

    第1关:学习-Java继承和多态之子类继承性 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性, ...

  6. 学习-Java继承和多态之方法重载

    第1关:学习-Java继承和多态之方法重载 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:使用重载方法为 Student 类创建三个构造方法. 相关知识 Java 中重载是指一个类中可以 ...

  7. 头歌实践教学平台 MIPS CPU设计(HUST)

    实验简介 本实训项目将帮助学生掌握 CPU 控制器设计的基本原理,能利用硬布线控制器的设计原理在 Logisim 平台中设计实现支持五条指令的 MIPS 单周期 CPU,该处理器能运行简单的内存冒泡排 ...

  8. 头歌实践教学平台上如何建项目且通过git上传

    头歌实践教学平台上如何建项目且通过git上传 目标:在头歌上建立项目test,并通过git工具将文件上传至头歌中. (1) 首先在https://code.educoder.net/explore页面 ...

  9. 头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统)——保姆级教程

    头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统) ***写在前面*** 知识补充 相关知识 实验环境准备 安装DNS服务器并开启服务 一.标题配置域名和IP的正解与反解zon ...

最新文章

  1. YOLO系列综述:从V1到V4
  2. Taro -- 微信小程序登录
  3. Activity管理(一):activity运行机制
  4. 流氓的Lenovo Drivers Management联想驱动管理程序
  5. 09、Non-Black-Box ZK(Barak‘s protocol)--Alon Rosen
  6. yy服务器维护,挂yy服务器
  7. 莫队算法学习笔记(一)——普通莫队
  8. 【题解】【PTA-Python题库】第6章-7 找出总分最高的学生 (15 分)
  9. 2020PAKDD 阿里巴巴智能运维算法大赛TOP20 ——磁盘故障预测问题比赛思路、难点与问题总结
  10. OSChina 娱乐弹弹弹——问世间情为何物,直教人生死相许
  11. VMware Workstation虚拟机设置静态ip
  12. 小学老师超强语录总结版
  13. 13个offer,8家SSP,谈谈秋招经验
  14. SRS_Audio_Sandbox注册码破解版+注册机+中文
  15. android usb投影win10,投影学堂:Win10和安卓投影机上斗法
  16. 计算机无法使用本地搜索,电脑资源管理器搜索功能无法使用解决措施
  17. 如何构建用户评分体系
  18. pandas学习task02 pandas基础
  19. keil调试工具(调试技术)
  20. 初出茅庐的‘小牛犊’(目标中...)

热门文章

  1. 【Python】第五课 函数
  2. Linux与Windows下的socket网络编程对比
  3. 物联网或可穿戴设备项目中的混合渲染
  4. 打印机:墨粉盒(墨粉筒) 、硒鼓
  5. 企业支付宝,登录限制,大额三年,不可用余额,支付关闭,
  6. 60分钟轻松搞定树莓派 AI 服务开发
  7. 英雄联盟转区服务器维护,LOL:转区玩家注意了,解冻服务已经上线,5天之内可出结果...
  8. Android 8.0 Volte开关流程 HD图标显示
  9. 安装wampserver是提示httpd.exe无法找到组件:没有找到MSVCR100.DLL,因为这个应用无法启动
  10. 论文精读:R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation...