20165336 2017-2018-2 《Java程序设计》第4周学习总结
20165336 2017-2018-2 《Java程序设计》第4周学习总结
教材学习内容总结
第五章
- 使用extends来定义一个子类。
- Object类是所有类的祖先类。
- 当子类和父类不在同一个包中时,父类中的private和友好访问权限的成员变量不会被子类继承。
- 访问protected成员变量和方法注意是不是在同一个包中。
- 创建一个子类对象时不仅子类中声明的成员变量被分配了内存,而且父类的成员变量也都分配了内存,子类不继父类的私有成员变量。
- 子类中有些继承的方法可以访问父类的私有变量。
- 类1 instanceof 类2,如果类1是类2的子类或创建的对象,则运算结果是true否则为false。
- 子类声明变量与父类继承的成员变量名字相同则父类的成员变量被隐藏。
- 子类可通过方法重写来隐藏继承的方法。
- 如果两个方法的名字相同,返回类型不同也必须保证参数不同,否则子类就无法隐藏继承的方法产生编译错误。
- 重写父类方法不允许降低访问权限,访问权限由高到低排序是public、protected、友好的、private。
- 用super操作被隐藏的成员变量和方法如:super.n、super.f()。
- 子类不继承父类的构造方法,所以需要使用super来调用父类的构造方法super()或super(变量1,变量2);
- final关键字可以修饰类,成员变量和方法中的局部变量。
- final类不能被继承,既不能有子类。
- 如果用final修饰父类中的一个方法那么这个方法不允许子类重写。
- 如果成员变量或局部变量被修饰为final那他就是常量。如果没有默认值必须赋值。
- 上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。
- 上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。
- 可将上转型对象强制转换成子类对象。
- 如果子类重写了父类的静态方法那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。
- 多态性就是父类的某个方法杯子类重写时,可以各自产生自己的功能行为。
- 用abstract修饰的类与方法叫做抽象类和抽象方法,抽象方法只需声明不许实现方法体。
- abstract类中可以有abstract方法,也可以有非abstract方法,非abstract类中不可以有abstract方法。
- abstract类不能用new运算符创建对象。
- 非abstract类的子类必须重写父类abstract类的方法给出方法体,abstract类子类可以继承abstract方法也可以重写abstract的方法。
- 开闭原则:对扩展开放对修改关闭。
第六章
- 使用关键字interface来定义一个接口。
- 接口体中包含常量的声明(没有变量)和抽象方法两部分。
- 接口体中只有抽象方法,所有的常量访问权限都是public而且是static常量,抽象方法的访问权限也是public。
- 接口实现用implements,实现多个接口要用逗号隔开。
- 类再重写接口方法是不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显的用public来修饰。
教材学习中的问题和解决过程
-
问题1:虚拟机用new创建见一个新对象时显示integer中的integer(int)已过时,java 使用或覆盖了已过时的 API。
代码调试中的问题和解决过程
-
问题1:for循环语句中声明的变量出了循环体还能被调用吗?
-
问题1解决方案:在for循环中的初始语句中声明的变量,只在循环内部有效,for语句中声明的变量相当于局部变量。
代码托管
(statistics.sh脚本的运行结果截图)