• 20155318 2016-2017-2 《Java程序设计》第四周学习总结


    20155318 2016-2017-2 《Java程序设计》第四周学习总结

    教材学习内容总结

    一、继承

    1.父类:为了改进代码,可以将多个代码中相同的部分提升为父类,其他类只需用extends这个关键词继承父类的行为,还可以扩充父类没有的行为,如下:

    public class Magician1 extends Role {
        public void fight(){
            System.out.println("魔法攻击");
        }
        public void cure(){
            System.out.println("魔法治疗");
        }
    }
    
    
    1. 子类和父类的is-a关系
    2. 继承的好处与弊端:提高代码的重复利用性,利于维护,增强代码阅读性;因为类与类之间产生了关系,某一个类的改变直接影响了另一个类,也许这个改变另一个类不希望有这个改变
    3. 重新定义:子类在继承父类之后,定义与父类中相同的方法部署,但执行内容不同
    4. 内建的标准标注为@Override
    5. 用abstract标示抽象方法

    二、继承语法

    1. 被定义为private无法直接存取,可以定义这些数据成员为protected,不开放访问权限,其中,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取
    2. Java中共有四个权限范围:private,无关键字,protected,public,权限依次从小到大。
    3. 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,执行父类中某构造函数,可以使用super()指定。子类构造函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
    4. final class表示这个类是最后一个,不会再有子类,不能被继承
    5. 使用标准备注@Override

    三、接口

    1. 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口,接口与接口之间可以有继承关系。
    2. interface:定义抽象的行为与外观,接口中的方法没有操作时,一定得是公开且抽象,此时可以省略public abstract
    3. enum语法可用于定义枚举常数。

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

    • 问题1:public,private,protected,和默认的区别

    • public修饰词,表示成员是公开的,所有其他类都可以访问;

    • private修饰词,表示成员是私有的,只有自身可以访问;

    • protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。

    • 无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限。

    • 问题2:this()与super()只能择一调用,而且一定要在构造函数第一行执行。

    class Some {
        Some(){
            System.out.println("调用Some()");
        }
        some(int i){
            System.out.println("调用Some(int i)");
        }
    }
    class Other extends Some{
        Other(){
            super(10);
            System.out.println("调用Other()");
        }
    }
    
    • 问题3:class前也可以加上final关键字
    • 如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。

    代码调试中的问题和解决过程

    • 问题1:课本讲多态与is-a是一段代码调试的问题

    • 编译检查语法从右往左,上图中编译时解读为Role is a Swordsman,编译失败,可以改为

    Role role1 = new Swordsman;
    SwordsMan swordsMan = (SwordsMan) role1;
    

    将role1参考至Swordsman,不会出错,但

    Role role2 = new Magicman;
    SwordsMan swordsMan = (SwordsMan) role1;
    

    将Role扮演Swordsman,role2参考的是Magicman,编译不会通过。

    • 问题2:课本中的多个RPG程序编辑不能通过,显示如下提示:

    • 通过看同学博客中提出的相似问题:操作接口时缺少具体行为,补全定义后可以解决。

    • 问题3:子类重新定义与父类完全相同的方法这种情况是什么情况?

    • 解决方案:这种情况称为覆盖,此时,子类中已找不到父类原来的方法,它的内存位置已经被替代。

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    上周考试错题总结

    1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
    2. 填空:~0b1010的十进制值是(-11)备注:以后可以直接编程解答这类问题。
    3. 填空:“30”转化为byte类型的30的语句是Byte.parseByte(“30”)
    4. 判断:Java中类总会有默认构造方法。(X) 备注:JAVA任何一个类都有一个默认的无参构造函数
    5. 填空:Java中的多维数组都是由(一维数组组成)。

    其他(感悟、思考等,可选)

    这周博客写的不多,调试代码用了不少时间,学Java需要不断巩固,因为每周学习量比较大,这周学习时,就开始遗忘上周的内容了,如何更全面的学习每一章的知识点做到不遗漏,是我下个阶段主要的努力方向。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/100 1/1 24/24 安装学习Java的一系列软件
    第二周 250/300 1/2 30/54 了解Java的基本语法
    第三周 552/852 1/3 16/60 了解Java是面向对象的语言
    第四周 717/1569 1/4 10/70 了解Java继承与接口

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:10小时

    • 实际学习时间:10小时

    参考资料

  • 相关阅读:
    Python 最强 IDE 详细使用指南!-PyCharm
    Python中最常用的字符串方法!
    转:用 Python 一键分析你的上网行为, 看是在认真工作还是摸鱼
    python中hasattr()、getattr()、setattr()函数的使用
    下载图片到本地,保存字符串内容到本地
    根据经纬度算出两个位置之间的距离
    根据日期获取星座和生肖
    java去除字符串的html标签
    java环信服务端注册IM代码
    linux命令
  • 原文地址:https://www.cnblogs.com/lxy1997/p/6581596.html
Copyright © 2020-2023  润新知