第五周总结

学号 2019-2020-1823 《数据结构与面向对象程序设计》第五周学习总结

教材学习内容总结

  • 继承是java类的一种特征,能够在父类的前提下编写出子类,继承避免多个类间重复定义共同行为,使用关键字extends。继承代表了子类与父类之间的is-a关系,中文称为“是一种”。子类继承父类以后,定义与父类中相同的方法部署,但执行内容不一样,这称为“从新定义” ,即“重写”(Override)。
  • 在Java中只有单一继承,即子类只能继承一个父类
  • 在Java中,若是想取得父类中的方法定义,能够在调用方法前,加上super关键字。能够使用super调用的父类方法,不能定义为private(由于这就限定只能在类内使用)。
  • 若是想执行父类中某构造函数,能够使用super()指定。如:super(10)表示调用父类构造函数时传入int数值10。
  • 若是class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也不会被继承
  • 从新定义方法要注意,对于父类方法中的方法权限,只能扩大不能缩小。若原来成员public,子类从新定义时不可为private或protected
  • enum可用于定义枚举常数。
  • java split(“”)能够用来分割字符串
  • char[] e = s.toCharArray();能够用来将字符串s所有填入字符数组e[]中,这样能够对e进行索引,找出关键字符。
  • a = Integer.parseInt(a1[0]);能够将字符串a1[]转换成整数型a
  • 在Java中能够使用interface定义抽象的行为和外观。接口中的方法没有操做时,必定得是公开且抽象。

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

问题1:方法重载 与 方法重写
问题1解决方法:多态性是面向对象编程的一种特性,和方法无关。静态多态性是指,一样的一个方法可以根据输入数据的不一样,作出不一样的处理,即方法的重载(有不一样的参数列表)。动态多态性是指,当子类继承父类的相同方法,输入数据同样,但要有别于父类的相应时,就要覆盖父类方法,即在子类中重写该方法(相同参数,不一样实现)。html

  • 问题2:容易搞混public、private、protected
  • 问题2解决方法:对修饰符进行总结

总结:java

修饰符:权限修饰符、状态修饰符、抽象修饰符git

类:编程

权限修饰符:默认修饰符,public数组

状态修饰符:final数据结构

抽象修饰符:abstrasocket

成员变量:ide

权限修饰福:4种都可函数

状态修饰符:static,final学习

构造方法:

只有权限修饰符:4种都可

成员方法:
权限修饰符:4种都可

状态修饰符:static,final

抽象修饰符:abstract

用得较多的是public

目前见到的组合规则:
成员变量:public static final

成员方法:public static、public abstract、public final

  • 问题3:super. 与 this.的使用区别
  • 问题3解决方法:
    this表示当前对象,也就是当前类对象,super表示当前类的父类,如
public changfangxing(int chang,int kuan,int gao)
    {
        this.chang=chang;
        this.gao=gao;
        this.kuan=kuan;
    }

这上面咱们用的就是this,表示的是当前对象里chang的数据。

public zhengfangxing(int chang, int kuan, int gao) 
 {
        super(chang, kuan, gao);
    }

super用的是当前类的父类。

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

  • 问题1:String[] a1 = s.split("+");为什么运行失败
  • 问题1解决方法:
    由于 "+"是一个正则字符,必需要转义才能够使用,因此正确用法应该是这样的
String[] a1 = s.split("\\*|\\+|-|/");

"*"和 "+"都须要转义而减除不须要。

  • 问题2:

  • 问题2解决方法:
    这个问题是我没有覆盖完接口中的方法,使得程序报错,只要咱们把接口中的方法覆盖完或者删除掉多余的方法就能够解决了。

  • 问题3:不知道如何计算字符串

  • 问题3解决方法:
    咱们能够将字符串分隔开,将其里面的数转换成整数,再将字符串放到数组里,用索引找到运算是加法仍是减法运算。代码以下:

package com.company;
public class script
{
    private String s ;
    public script(String s)
    {
        this.s=s;
    }
public  String getresult()
{
    String[] a1 = s.split("\\*|\\+|-|/");

    String reply = "";
    int a, b, c, d;
    a = Integer.parseInt(a1[0]);
    b = Integer.parseInt(a1[1]);
    c = Integer.parseInt(a1[2]);
    d = Integer.parseInt(a1[3]);
    Rational rational = new Rational(a,b );
    Rational rational1 = new Rational(c,d);
    int i = 0;
    int n = 0;
    char[] e = s.toCharArray();
    for (i = 0; i < e.length; i++) {
        if (e[i] == '+') {
            reply = rational.add(rational1).toString();
        } else if (e[i] == '-') {
            reply = rational.subtract(rational1).toString();
        } else if (e[i] == '*') {
            reply = rational.multipy(rational1).toString();
        } else if (e[i]=='/')
        {
            n++;
        }
        else if (e[i]=='/'||n==3)
        {
            reply = rational.divide(rational1).toString();
        }
    }
    return  reply;
}

script类是输入一个字符串给它后,它会将字符串转换成数字,而后调用rational类来计算有理数,最后再以字符串的形式返回给主函数。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

上周并没有考试。

  • 上周博客互评状况

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

  • 本周时间紧迫(可能撞上了国庆),在有限的时间内学习了继承还有javasocket编程,难度颇大,让我感触最深的仍是对书本的研读没有够深刻,在实验中一些方法课本上都有,可是日常读书时没有认真去看。
  • 经过代码学习java有着其独特的好处,能够加深咱们的记忆,现将代码运行一遍,再慢慢解析理解每行代码的意义,这样更有利于咱们理解代码,先从需求的角度再到用编程方法解决的角度来看代码。

学习进度条

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

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

  • 计划学习时间:10小时

  • 实际学习时间:15小时

  • 改进状况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

相关文章
相关标签/搜索