Java第四次作业—面向对象高级特性(继承和多态)

(一)学习总结

1.学习使用思维导图对Java面向对象编程的知识点(封装、继承和多态)进行总结。

2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?

不能够编译通过,使用super关键字调用父类的构造方法需要将语句supe("Hello.Grandparent.");放在第一句。

构造函数是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态,构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。

子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

不能反过来调用,因为父类不知道子类有什么变量而且子类也得不到初始化的父类变量。

3 . 阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?

class Animal{
void shout(){System.out.println("动物叫!");
}
}
class Dog extends Animal{public void shout(){  System.out.println("汪汪......!");  }public void sleep() {System.out.println("狗狗睡觉......");}
}
public class Test{
public static void main(String args[]) {Animal animal = new Dog(); animal.shout();//创建对象,向上转型。父类中没有sleep方法,所以不能够被调用。Dog dog =(Dog)animal; //向下转型,应强制类型转换dog.sleep(); Animal animal2 = new Dog(); dog = (Dog)animal2;//父类与子类没有建立联系,父类不能向子类转换dog.shout();}
}

4.运行下列程序

程序修改:

class Person {
private String name ;
private int age ;
public Person(){ }
public Person(String name,int age){ this.name = name ; this.age = age ;
}
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 toString(){return "姓名"+getName()+"           年龄"+getAge();
}
}
public class Test{  public static void main(String args[]){ Person per = new Person("张三",20) ; System.out.println(per);System.out.println(per.toString()) ;
}
}

(1)对象输出时一定会调用Object类中的toString()方法打印内容。java所有类都有一个公共的父类Object,toString方法是Object中的常用方法,子类中不覆写toStrong方法时,调用toString程序会随机给出地址信息

(2)程序中覆写了toString方法,输出对象信息时调用的是子类中覆写的toString方法

5.其他需要总结的内容。

(1)多态:对象的向上转型:转型之后,操作的为父类对象,则无法找到子类中定义的新方法 对象的向下转型:如果想要产生一个对象向下转型则必须产生向上转型关系,表示子类与父类关系的建立

(2)抽象类:抽象类必须有子类,不能使用final关键字声明,可以有构造方法

(3)继承:子类无条件继承父类的无参构造方法 子类可通过super关键字调用父类的构造方法

(4)final关键字:final关键字不能有子类 final声明的方法不能被子类继承 使用final声明的方法不能被子类覆写,使用final声明的变量即为常量,需为其指定内容,static final联合声明的为全局常量

(二)实验总结

1.

程序设计思路:

(1)定义员工类,具有姓名、年龄、性别属性,构建构造方法和get,set方法。

(2)定义管理层类,继承员工类,写出子类属性职务和年薪,使用super关键字继承父类属性。

(3)定义职员类,继承员工类,写出子类属性所属部门和月薪,使用super关键字继承父类属性。

(4)定义一个测试类,进行测试

类图:

2.

程序设计思路:

(1)构建一个平面图形抽象类,写出Zhou1,Mian1方法用来求周长和面积。构建一个立体图形抽象类,写出Zhou2,Mian2方法用来求表面积和体积。

(2)构建球类、圆柱类,圆锥类继承立体图形抽象类,覆写父类中的zhou1,Mian1方法。构建矩形类、三角形类、圆类继承平面图形抽象类,覆写父类中的zhou2,Mian2方法。

(3)建立测试类,进行测试

类图:

3.

  1. 程序设计思路:

(1)构造狮子类,猴子类,鸽子类,喂养类

(2)在喂养类中构建狮子,猴子,鸽子的对象,并调用eat()方法。

(3)写出测试类,进行测试

  1. 程序设计思路:

(1)构建抽象类Animal

(2)构建狮子类,猴子类,鸽子类继承父类Animal类,覆写父类中eat()方法。

(3)在喂养类中创建Animal的对象an,调用eat()方法。

(4)创建测试类,创建子类向上转型父类,调用父类中eat()方法。

  1. 程序设计思路:

(1)构建抽象类Animal

(2)构建狮子类,猴子类,鸽子类继承父类Animal类,覆写父类中eat()方法。

(3)在喂养类中创建Animal的对象数组animal[],调用eat()方法。

(4)创建测试类,在对象数组中添加对象并输出。

(三)代码托管

作业链接

转载于:https://www.cnblogs.com/renxiuxing/p/6731003.html

Java第四次作业,面向对象高级特性(继承和多态)相关推荐

  1. Java第四次作业——面向对象高级特性(继承和多态)

    Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...

  2. Java第五次作业--面向对象高级特性(抽象类和接口)

    一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握抽象类的设计 掌握接口的设计 理解简单工厂设计模式 理解抽象类和接口的区别 掌握包装类的应用 掌握对象的比较方法和比较器的使用 学习使用日期操 ...

  3. 尚学堂Java第四章作业编码题+个人想法

    尚学堂Java第四章作业编码题+个人想法 编码题一: 编码题二: 编码题三: 终于到我想说的地方了 刚开始学习Java,刚开始学会做笔记,觉悟的可能比较晚,但没关系,我会努力的! 由于每次做作业都难理 ...

  4. Java第三次作业——面向对象基础(封装)

    Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性就是指对外部不可见,用对象直接访问类中的属性,在面向对象法则中 ...

  5. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

  6. 面向对象-封装、继承、多态

    面向对象-封装.继承.多态 面向对象-封装 一.封装: private 数据类型 _名字;   --成员变量 public 默认一致 名字 属性 {  get{ return _名字; }  set{ ...

  7. JavaScript(JS) 面向对象(封装、继承、多态)

    面向对象是把事物给对象化,包括其属性和行为.面向对象编程更贴近实际生活的思想.可以简单的理解面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象.本文主要介绍JavaScrip ...

  8. JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

    第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...

  9. Educoder- 《JAVA从小白到大牛》(第二章)2-3 Java面向对象 - 封装、继承和多态的综合练习

    提示:本文章为个人学习记录,仅供参考学习,禁止转载,支持交流与讨论. 文章目录 第1关:通关任务一 任务描述 相关知识 面向对象思想 封装 继承 `super()`和`this()` 编程要求 测试说 ...

最新文章

  1. 数据结构——树的简单操作集合
  2. gmail收件箱标签设置_通过多个收件箱实验室有效管理您的Gmail
  3. 遇到一个Linux系统文件被删除后仍占用磁盘的问题
  4. 通过条形码扫描器攻击工控系统
  5. 安装zsh-autosuggestions zsh-syntax-highlighting
  6. 不要老是盯着你的对手,要开始盯紧你的用户啦
  7. 【券后价16.80元】【海蓝蓝】夹心海苔脆芝麻海苔即食罐装海苔宝宝辅食儿童零食40克...
  8. c语言 宏常量 pi,宏和常量
  9. 网站备案常见词汇解释汇总
  10. javascript之Math
  11. 如何在EF中实现left join(左联接)查询
  12. Spark、Docker、Tensorflow开发者看过来,CCTC 2017报名开启
  13. 设计模式学习笔记-2 创建者模式-工厂方法模式
  14. EditPlus设置远程连接Linux管理文件
  15. python中if brthon环境安装包_Python实现base64编码的图片保存到本地功能示例
  16. MySQL--数据模型
  17. 实验室真的需要智能LIMS系统吗?
  18. 计算机柜里 do dl代表什么,dl是什么意思(你知道AI、ML和DL分别代表什么吗?)...
  19. 第8周——定期存款利息计算器
  20. Android绝对布局AbsoluteLayout

热门文章

  1. 计算机应用基础对其他课程的帮助,对计算机应用基础课程的探讨(4页)-原创力文档...
  2. c语言定义函数后引用,求助,函数在其他函数中使用时要先声明后调用,这个没声明就用了...
  3. UXDB基于MySQL_干货分享|“脱胎换骨”后的UXDB究竟如何
  4. Java String到int,Java int到String
  5. 起泡排序算法_气泡排序算法
  6. ssh无密码登录_3个简单步骤即可完成无密码SSH登录
  7. springamqp_SpringAMQP
  8. memcached 命令_Memcached Telnet命令示例
  9. 编程范式--并发编程相关代码
  10. 常见的Java开发框架有哪些?