• 20175226 2018-2019-2 《Java程序设计》第四周学习总结


    20175226 2018-2019-2 《Java程序设计》第四周学习总结

    教材学习内容总结

    • 子类与父类
      • 格式class 子类名 extends 父类名
      • Object类是所有类的祖先类
    • 子类的继承性
      • 在同一包中子类会继承非private的成员和方法
      • 不在同一包中只会继承protected和public的成员和方法
    • 成员变量的隐藏
      • 子类可会将同自身变量名字相同的继承变量隐藏
      • 子类继承方法只能操作子类继承或隐藏的变量
      • 子类新定义的方法不能操作隐藏的成员变量
    • 方法重写
      • 子类中定义一个与父类方法完全相同的方法即可进行方法重写
      • 重写方法无法操作被子类隐藏的成员变量和方法
      • 重写是不能降低访问权限
    • super关键字
      • 操作被隐藏的成员变量和方法、调用父类的构造方法
    • final关键字
      • final类不能被继承,不能有子类
      • final修饰的方法不能被子类重写
      • final修饰的变量为常量,运行期间不允许发生变化
    • 上转型对象
      • 操作子类继承方法或重写的实例方法
    • 多态性父类的某个方法被多个子类重写时,可以各自产生各自的功能行为
    • abstract类与abstract方法
      • 对于此方法只允许声明,不允许实现
      • 此类不能用new运算符创建对象,但该对象可以成为其子类对象的上转型对象

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

    • 问题1:118页weight变量隐藏时类型变了,但121页为什么computer类型变化后编译错误
    • 问题1解决方法:通过询问同学发现是自己弄混了变量与方法在继承上的定义
      • 变量隐藏只需要继承变量的名字相同,声明类型可以不同
      • 在方法重写时不仅名字要相同,方法名字,参数个数,参数类型都要相同即父类中为float computer(float x,int y,char z)子类重写时不能为double computer(float x,char z)

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

    • 问题1:看不透5_10的上转型对象?
    • 问题1解决方法:通过百度与自己对代码的调试大致理解上转型对象的意义与用途。
    class  类人猿 {
       void crySpeak(String s) {
           System.out.println(s); 
       }  
    }
    class People extends 类人猿 {
       void computer(int a,int b) { 
          int c=a*b;
          System.out.println(c); 
       }
       void crySpeak(String s) {
          System.out.println("***"+s+"***"); 
       }  
    }
    public class Example5_10 {
       public static void main(String args[]) {
          类人猿 monkey;
          People geng = new People();   
          monkey = geng ;
          monkey.crySpeak("I love this game");
          People people=(People)monkey;
          people.computer(10,10);
       }
    }
    

    其中monkey就是上转型对象,其可以操作子类的继承重写的方法如

       void crySpeak(String s) {
          System.out.println("***"+s+"***"); 
       }  
    

    无法操作子类里的新方法void Computer需要通过People people=(People)monkey;进行转化
    [参考网站](https://zhidao.baidu.com/question/98125050.html)

    [代码托管](https://gitee.com/wpyzka/20175226/tree/master/src/ch5)

    上周错题总结

    • 错题1:
      下列说法正确的是
      A .如果想在方法中使用被隐藏的成员变量,可以使用关键字super。
      B .double类型的成员变量的默认值为0,局部变量没有默认值。
      C .对成员变量的赋值操作只能放在方法中。
      D .面向对象语言中的“类”相当于C语言中的“函数”。
      解析:
      A项:应使用关键字this。B项:double类型的成员变量的默认值为0.0。D项:面向对象语言中的“方法”相当于C语言中的“函数”。
    • 错题2:
      下列关于参数传值的说法,错误的是
      A .对象调用方法时,参数变量必须有具体的值。
      B .方法如果改变参数的值,向参数传值的变量的值也会改变。
      C .可以向int型变量传递一个short值。
      D .如果改变参数变量所引用的实体,原变量的实体会发生同样的变化。
      E .对于可变参数,如一个参数代表x,那么x.length等于x所代表的参数的个数。
      解析:
      方法如果改变参数的值,不会影响向参数“传值”的变量的值。

    学习进度条

    计划学习时间:20小时
    时间学习时间:18小时左右
    代码行数:425/1007

  • 相关阅读:
    Xcode 构建规则
    创建带阴影,有圆角的UIView的正确方式
    EffectiveC#12,13,14--成员初始化
    EffectiveC#11--选择foreach循环
    EffectiveC#9--明白几个相等运算之间的关系
    EffectiveC#8--确保0对于值类型数据是有效的(初始化问题)
    NET基础课--泛型(NET之美)
    NET基础课-- 类型基础(NET之美)
    EffectiveC#7--选择恒定的原子值类型数据
    EffectiveC#6--区别值类型数据和引用类型数据
  • 原文地址:https://www.cnblogs.com/20175226wpy/p/10585295.html
Copyright © 2020-2023  润新知