刘喆君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

教材学习内容总结

  • 相关概念:
    • 继承:避免多个类间重复定义共同行为
    • 子类与父类:
      • 父类:
        • 对有着共同特性的多类事物,进行再抽象成一个类,这个类就是多类事物的父类
        • 父类的意义在于可以抽取多类事物的共性
      • 子类既可以是一个子类,也可以是一个父类;父类既可以是一个父类,也可以是一个子类
      • 在Java中只有单一继承,即子类只能继承一个父类
      • 子类与父类间会有is-a的关系(子类 is a 父类
    • is-a
    • 多态:
      • 继承可以复用代码,更大的用处是实现「多态」
      • 封装是继承的基础,继承是多态的基础
      • 「用父类声明对象引用,用子类生成对象」就有了多态
    • 覆盖:子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法
    • 抽象方法、抽象类:
      • Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法
      • 抽象类不能使用new生成对象
    • 上转型对象:
      • 不要将父类创造的对象和子类对象的上转型对象混淆。
      • 如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法。
    • 关于接口:
      • 接口(interface),在Java编程语言中是一个抽象类型,是抽象方法的集合
  • 关键字:
    • extends

      • 继承父类的行为,再扩充父类原本没有的行为
      • 继承时使用extends关键字,private成员也会被继承,但子类无法直接存取,必须通过父类提供的方法来存取(父类愿意提供访问方法的话)
    • 权限关键字:

      • public:权限最大

      • protected:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取

      • private:权限最小

        但实际上有四个权限范围(未定义权限关键字时默认为包范围):

        |关键字 | 类内部| 相同包类|不同包类|
        | -------- | :----------------😐:----------------😐:---------------: |
        | public | 可存取 | 可存取 | 可存取 |
        | protected | 可存取 | 可存取 | 子类可存取 |
        | | 可存取 | 可存取 | 不可存取 |
        | private | 可存取 | 不可存取 |不可存取|
        设计时使用权限需根据经验或团队讨论而定,通常先使用private,以后视需求再放开权限。

    • super

      • 取得父类中的方法定义
      • 执行父类中某构造函数
      • this只能择一调用,而且一定要在构造函数第一行执行
    • final

      • 定义类:表示这个类是最后一个,不会再有子类,不能被继承
      • 定义方法:表示最后一次定义方法,子类不可以重新定义final方法
    • abstract:如果某方法区块中没有任何程序代码操作,可以用abstract标示该方法为抽象方法,该方法不用写{}区块,直接;结束即可

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

  • 问题1: 课本中多个代码都写了许多个java文件,这样就要求一定要放在同一个文件夹之下,假如不放在同一文件夹之下,编译也是十分麻烦的,
  • 问题1解决方法:所以我把书上的分开的java文件写在了一个文件里,这样比较方便,但是我不知道这样做到底好不好。但是确实方便一点是真的。

上周错题总结

  1. 3*4的值相等的是:3<<2。4的二进制是100,所以3*4是3左移2位和3<<2一样.

  2. 观察以下方法的定义,则该方法返回类型为的double.

     ReturnType method(byte x,double y) { 
    
     return (short)x/y*2;
    
     }
    

    short将byte类型的x强制转化为short类型,但y的精度更高,所以返回类型为double。

  3. Float和float不一样,Float是float提供的封装类,不是基本数据类型。以0开头是八进制表示法,十六进制是0x开头。

  4. “字符类型”中的“字符”指Unicode表中的一个字符。

  5. 错误的初始语句有:char str[]='hello';,char str[100]="hello";,char str[]={'hello'};

代码托管

总结

在这次的博客里,我把知识总结和教材中的问题及解决方法合并在了一起,没有采用之前的只列知识点,而是把知识点和详细的内容写在了一起,这样我看的时候也容易一点。当然也有一些是我没有写到的。
随着时间推移我们学习的内容也越来越难,越来越深入了,但是只要我能紧跟老师的时间线,紧凑地学习,是可以掌握大部分知识的。

posted on 2018-03-25 14:23  mushroom1111  阅读(168)  评论(0编辑  收藏  举报