20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结

教材学习内容总结

第五章 子类与继承

一.继承

  • 1.继承定义:避免多个类间重复定义共同行为
  • 2.子类与父类:
    • 父类:

      • 对有着 共同特性 的多类事物,进行再 抽象 成一个类,这个类就是多类事物的父类
      • 父类的意义在于可以抽取多类事物的共性
    • 子类既可以是一个子类,也可以是一个父类;父类既可以是一个父类,也可以是一个子类
    • 在Java中只有 单一继承 ,即 子类只能继承一个父类
    • 子类与父类间会有 is-a 的关系( 子类 is a 父类
    public class RPG1
    {
    public static void main(String[] args){demoSwordsMan1();demoMagician1();}static void demoSwordsMan1(){SwordsMan1 swordsMan1 = new SwordsMan1();swordsMan1.setName("Justin");swordsMan1.setLevel(1);swordsMan1.setBlood(200);System.out.printf("剑士:(%s,%d,%d)%n",swordsMan1.getName(),swordsMan1.getLevel(),swordsMan1.getBlood());}static void demoMagician1(){Magician1 magician1 = new Magician1();magician1.setName("Monica");magician1.setLevel(1);magician1.setBlood(100);System.out.printf("魔法师:(%s,%d,%d)%n",magician1.getName(),magician1.getLevel(),magician1.getBlood());}
    }
  • 3.多态与is-a
    • IS-A译为“是一种”,子类与父类就是一种“IS-A”的关系。例如上述代码,SwordsMan是一种Role(即SwordsMan is a Role)。
    • 注意建立对象时候的顺序,应该遵守从右往左读的原则(这样才符合IS-A原则):
    SwordsMan swordsman=new SwordsMan;
    Role role=new SwordsMan();
    • 在java中有且仅有一种继承父类
    • 赋值时:如果用父类建立了一个对象实例,那么要将这个对象赋给它的子类时,需要进行强制转eg:
    Role role1 = new SwordsMan();
    SowrdsMan swordsMan = (SwordsMan) role1;
  • 4.重新定义行为
    如果子类和父类的定义函数名相同会出现函数覆盖的情况。
    多个类中功能相同但是功能主体不同,也可以抽取在父类中。

  • 5.抽象方法、抽象类
    上述在父类中的fight()函数没有撰写程序代码,用abstract关键词标识,public abstract class roleplay表示定义不完整的类,就不能建立实例。
    子类必须覆盖父类中的所有抽象方法,才能建立子类调用。

  • 6.protected成员
    protected与public、private类似都是权限关键字。如果成员被定义为protected的话在相同的包中可以直接存取。

  • 7.super关键字
    修改子类中已经存在的内容时,可以在调用方法前加上super关键字。
    在使用super关键字调用父类方法,不能定义为private(只限定在类内中使用)

  • 注意
    (1)关键字extends是为了扩充和继承父类的行为。
    (2)在java中一个子类只能继承一个父类。
    (3)在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
    (4)在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后
    (5)标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
    (6)子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。

教材学习中的问题和解决过程

  • 问题一:
    关于子类继承抽象类有些不太清楚,课本上说继续标识子类是一种抽象类或者说操作抽象方法。关于如何操作抽象方法小小的做了一个尝试:
abstract class  role{abstract void speak();}
class student extends role {void speak(){System.out.println("i am just a student");}}public class abvoid {public static void main(String[] args) {student stu1=new student();stu1.speak();
// TODO code application logic here}}
  • 结果

调试与运行截图

  • 编译
  • 上传码云

上周考试错题情况

  • 题目1
在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15
1. 修改代码中的stu的number为自己学号的后四位,package那一行改为你的姓名首字母缩写,比如刘德华同学改为package ldh
2. 其他需要修改的自行修改,提交运行结果截图
  • 出现问题:编译不成功:找不到或无法加载主类项
  • 解决办法:
    注意编译命令为 javac sms(文件夹)/ Example4_15.java
    运行命令 java sms/ Example4_15
  • 运行截图

  • 题目2
参考http://www.cnblogs.com/rocedu/p/6766748.html 编程实现输入平方倒置的功能命令行传入数组,比如类名为ArraySquareReverse,   java ArraySquareReverse 1 2 3 4 输出16 9 4 1 提交运行结果的截图(至少五张),注意测试正常,异常,边界情况,输入参数最后一个是你的学号后2位
  • 出现问题:类名必须和文件名一样
  • 编译运行结果
    (1)例子
    (2)参数最后一个是我的学号后2位 16
    (3)参数有一个是0
    (4)参数有负数
  • 运行结果
    (1)

    (2)
    (3)
    (4)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

本周学习感受

本周测试题目二较难,需要用到各种结构体和数组,难度较大,我是在上网查阅资料后才编写出来,仍需多加练习。
这两周的学习内容中有很多的概念,书上的例子也有很多需要我们去实践,虽然说课本上的代码也敲了,知识内容都理解了,但是感觉学的还是不踏实,对于java面向对象这一块还是不能很好的应用。只能说学的多而不精,看上去每个概念都学了,但是应用方面有很大的欠缺。希望以后自己慢慢地实践过程中再学习体会吧。
我慢慢的感觉学习Java已经变成了每天的一项日常,会不知不觉的在空闲的时候学习一会Java,慢慢的也体会到了Java的乐趣,我相信我会带着这种乐趣一直坚持下去

转载于:https://www.cnblogs.com/sms369/p/10590965.html

20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结相关推荐

  1. 20175316 盛茂淞 实验一 Java开发环境的熟悉

    20175316 盛茂淞 实验一 Java开发环境的熟悉 实验目的 使用JDK编译.运行简单的Java程序 实验要求 1.建立"自己学号exp1"的目录 2.在"自己学号 ...

  2. 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...

  3. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  4. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  5. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

  6. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  7. 20175208 《Java程序设计》第九周学习总结

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

  8. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

  9. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

最新文章

  1. Python全栈开发:RabbitMQ/Redis/Memcache/SQLAlchemy
  2. Windows控制台程序处理消息编程实例二则
  3. VS中查看子类对象内存分布的方法
  4. 电脑硬件知识学习_DIY电脑多年,这些硬件冷知识你们知道吗?
  5. 大剑无锋之介绍一下B+树【面试推荐】
  6. Python数值计算:一 使用Pylab绘图(1)
  7. 用户使用说明c语言,(C语言使用指南.docx
  8. python一些简单操作_python列表的基本操作有哪些
  9. Tomcat映射虚拟路径到指定磁盘(eclipse)
  10. 新年就是要你红!华为Mate 20 Pro馥蕾红璨星蓝来袭
  11. mysql全文索引 插件,如何编写MySQL全文索引插件
  12. gdb当前哪一行_GDB原理之ptrace实现原理
  13. 高维(多变量)优化问题的技术与瓶颈
  14. 看jQuery源码的技巧
  15. 计算机怎么改鼠标标志,电脑鼠标指针怎么改 修改电脑鼠标指针方法【图文】...
  16. webservice学习wsdl解读(2)
  17. Visio画拓扑图随记
  18. php实训日记200字,做实验日记200字
  19. MySQL海量数据项目实战
  20. 【SpringBoot】SpringBoot常用注解

热门文章

  1. 喜马拉雅fm java开发_【android】喜马拉雅FM sdk使用
  2. Java中是值传递和引用传递
  3. 7-75 正方体表面积计算
  4. python中用selenium进行自动打开浏览器打开指定网页并关闭-带图详解
  5. 电脑如何添加pcsx2 bios文件
  6. ICC Scenario Difinition(什么是Scenario?)
  7. 软件测试专业职业访谈报告范文,第一部分:创业者访谈报告
  8. vue 如何下载文件(包含txt jpg pdf word)
  9. 大家好,我叫二哈识图
  10. 5G NR - 38.101-1协议笔记(一)