学号 20175223 《Java程序设计》第4周学习总结
教材学习内容总结
- 第五章要点:
- 要点1:子类与父类:extends、类的树形结构;
- 要点2:子类的继承性:同一包中与不在同一包中的继承性、UML图、protected;
- 要点3:子类与对象:特点、instanceof运算符;
- 要点4:成员变量的隐藏和方法重写;
- 要点5:super关键字、final关键字;
- 要点6:对象的上转型对象,继承与多态;
- 要点7:abstract类与abstract方法;
- 要点8:面向抽象编程;
- 要点9:开-闭原则。
教材学习中的问题和解决过程
1. 编程实现输入平方倒置的功能
要求:命令行传入数组;重点:命令行参数。
- 问题1解决方案:
如何实现命令行传入参数?
在public static void main(String [] args)
中,Java程序运行时,会调用main方法,args就是命令行参数。
public class xxxx {
public static void main (String args[]) {
for(String arg : args){
System.out.print(arg+" ");
}
for(String arg : args)
是for each
用法,历遍数组args所有元素。
使用命令行输入参数:
java xxxx 1 2 3 4
输出如下:
//java xxxx 1 2 3 4
1 2 3 4
2. 对象的上转型对象。
什么是对象的上转型对象?
尝试写一个程序实验学习:
class Material { //定义父类:材料
void provision(String material, String color) {
System.out.println(material+"有光泽:"+color);
}
void fatherExtra() {
System.out.println("This is fatherExtra.");
}
}
class Solid extends Material { //定义子类:固体
void provision(String solid, String solidColor) {
System.out.println(solid+"有金属光泽:"+solidColor);
}
void extra() {
System.out.println("This is extra.");
}
}
public class Instance {
public static void main(String[] args) {
Material metal;
Solid gold = new Solid();
metal = gold; //metal 是 Solid 对象 gold 的上转型对象
metal.provision("gold", "golden");
gold.provision("gold", "golden");
//metal.extra(); // extra 方法是子类 Solid 新增的方法,父类中不存在,所以无法使用
gold.extra(); // extra 方法是子类 Solid 新增的方法,对象 gold 可使用
metal.fatherExtra(); //gold 的上转型对象也可以使用 Solid 的父类 Material 的方法
//提问:子类对象的上转型对象与父类对象的区别?
Solid metal_2 = (Solid)metal; //创建一个新对象 metal_2,把上转型对象强制转化为子类的对象
metal_2.extra();
//metal.extra(); // extra 方法依然无法使用
}
}
3. Shell脚本学习笔记二:字符串
代码调试中的问题和解决过程
1. Integer.parseInt(String s) 的注意事项
使用Integer.parseInt(String s)
的简单程序:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String s = reader.nextLine();
int num = Integer.parseInt(s);
System.out.println(num);
}
}
执行输入命令时,输入 123123
,输出 123123
。
注意:Integer.parseInt(String s)
只能将 字符串 类型的 整数 数字转化为 int
类型的数字。
要转化的字符:不可是非数字的字符(英文、中文、特殊字符等),不可是有小数的数字字符(1.0、12.3等)。
如果执行输入命令时,输入 ThisIsNotANumber
或 1.0
,报错:
Exception in thread "main" java.lang.NumberFormatException: For input string: "ThisIsNotANumber"
//Exception in thread "main" java.lang.NumberFormatException: For input string: "1.0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at test.main(test.java:7)
[代码托管]
- 代码提交过程截图:
- 代码量截图:
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 322/322 | 1/1 | 23/23 | |
第二周 | 520/842 | 3/4 | 25/48 | |
第三周 | 458/1300 | 2/6 | 16/64 | |
第三周 | 914/2214 | 2/8 | 21/85 |
计划学习时间:20小时
实际学习时间:21小时