20145329《Java程序设计》第四周学习总结
教材学习内容总结
封装、继承、多态
封装:封装类私有数据,让用户无法直接存取。
继承:
定义:避免多个类间重复定义共同行为,就是相同的代码提升为父类,java中只能继承一个父类。用继承的方式编写代码可以提高代码的弹性。
关键字extends:j继承父类的行为并扩充原本没有的行为。
语法细节:protected:用protected定义的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类中直接存取。
java中所有对象一定“是一种”object。如果定义类没有使用extends关键字指定继承任何类,那么一定是继承java.lang.Object。
权限(由小到大):private ->无关键字 ->protected ->public。
多态:
is-a:子类与父类之间是is-a(是一种)关系,编写代码时可以使用is-a检查语法的逻辑是否正确:从=右边往左读,看右边是不是左边的子类。当右边不是左边的子类的时候,程序编译错误,也可能存在检查为右边可能是左边子类的不确定的结果,这时可以执行(Cast)叫程序住嘴语法,错误时抛出ClassCastException.
多态:单一接口操作多种类型的对象。
关系:
封装私有数据使用户不能直接存取,程序代码的相同代码可以定义在父类中,子类可以继承使用,一个父类中的同一个操作接口可能有多个子类使用,子类中的操作内容可以待到父类中调用,同一操作接口操作多个操作内容,称为多态。
重新定义
定义:
在继承父类之后,定义与父类中相同的部署,但是执行的内容不同,操作接口相同,只是方法操作内容不同。
super:
想取得父类中的方法定义,可以在调用方法前,加上super关键字,使用它调用的父类方法不能定义为private。
- 注意:重新定义对于父类中的方法权限,只能扩大不能缩小,并且其他部分必须与父类中方法签署完全一致。
抽象类与接口
抽象类
1.方法区块中没有任何程序代码操作,使用abstract标示该方法为抽象方法,,类中若有方法没有操作,并且标示为abstract,表示类定义不完整,称为抽象类。
2.java中可以使用interface来定义抽象的行为和外观。
3.子类继承抽象类的两种做法:继续标示该方法或者操作抽象方法。
4.为了工作的合理和编写的方便,写程序是可以先创建实例,然后执行go()方法过程中调用抽象方法。
接口
1.implements关键字:类要操作接口,必须使用implements关键字。
- 接口定义方法:操作接口定义的方法或者将该方法标示为abstract.
3.类可以操作两个以上的接口。
4.语法细节:接口的方法没有操作时,一定得是公开且抽象,为方便可省略public abstract.
final关键字
- 定义:限定不想再改变的指定变量值,如果被声明的final没有明确用=指定值,表示延迟对象成员指定。
2.class前用final关键字定义,表示这个类是最后一个了,不再有子类也不能被继承。
equals()
1.equals()方法是Object类有定义的方法,程序代码:
`public boolean equals(Object obj){
return (this==obj);
}`
2.instanceof运算符:判断对象是否由某个类创建,左操作数是对象,右操作数十类。
enum枚举常数
enum可用于定义枚举常数。enum定义了特殊类,继承自java.lang.Enum,由编译程序处理,直接撰写会被拒绝。
教材学习中的问题和解决过程
问题一:
重新定义的意义是什么,既然在父类中定义了操作接口,还需要在子类中定义操作内容,也就是说父类中不定义操作接口,子类中直接定义也可以执行,那么为什么还要在父类中定义呢,这不是与代码实行继承的初衷违背了吗?
解决:没有什么比较清楚的解释,大致书上的意思可能只是说可以把它提上去,没说必须把它提上去。
问题二:
在编译教材P187页Inheritance ConsoleGame.java时因为误把return scanner.nextInt();写成了return Scanner.nextInt();导致编译错误,但是之前说加上@override就不用担心打错字的问题,这是为什么呢?
解释:大致应该跟偷懒是一种,他只是对比之前能读懂那种常见的书写错误,但scanner是关键字,大小写区分不考虑为打错字的范围。
问题三:
编译错误和执行错误到底是什么区别,怎么判断,弄不清。
解决:编译错误差不多就是语法不对,比如你写String str='str'编译就会出错。运行错误是指语法没问题,当时逻辑错误,比如一个方法传进一个String类型的变量str,方法体中有类似于str.equals("str");的语句,但是传进的是一个null,那么这一句就相当于null.equals("str");这肯定会抛空指针异常。
代码调试中的问题和解决过程
1.
错误:java:找不到符号
类型:SwordsMan()
错误:package jdy.cls
解决:上周的问题又犯了,对文件进行了打包,把编译生成的文件和.java文件分类存放了,使得程序调用时找不到相应的文件。
2.
`public class MultiChat {
public static void main(String[] args) {
Client c1=new Client ("127.0.0.1","Caterpillar");
Client c2=new Client ("193.168.0.2","Justin");
ClientQueue queue=new ClientQueue();
queue.addClientListener(new ClientListener(){
@Override
public void clientAdded(ClientEvent event){
System.out.printf("%s 从 %s 联机%n",
event.getName(),event.getIp());
}
@Override
public void clientRemoved(ClientEvent event){
System.out.printf("%s 从 %s 脱机%n",
event.getName(),event.getIp());
}
});
queue.add(c1);
queue.add(c2);
queue.remove(c1);
queue.remove(c2);
}
}
`
错误:(10, 14) java: 找不到符号
符号: 方法 addClientListener(<匿名ClientListener>)
位置: 类型为ClientQueue的变量 queue
解决:还是大小写啊
3.
import java.util.Scanner;
public class ConsoleGame extends GuessGame {
private Scanner scanner=new Scanner (System.in);
@Override
public void print(String text){
System.out.print(text);
}
@Override
public void println(String text){
System.out.println(text);
}
@Override
public int nextInt() {
return Scanner.nextInt();
}
}
错误:java: 无法从静态上下文中引用非静态 方法 nextInt()
解决:把return canner.nextInt();改成return sScanner.nextInt(); Scanner是一种方法,对输入的数扫描的动作,而scanner是对输出的数显示。
本周代码托管截图



学习感悟
之前一直就觉得java是一门理论学习可,但是现在越来越感觉到这是一门语言,就像和韩国人讲韩语一样,我们也是通过java语言和计算机进行交流,把自己的思想通过代码告诉计算机,计算机也会像人一样工作,掌握好java语言,可以让我们的思想得以具体实现。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 50/50 | 2/2 | 20/20 | 实现“HelloWorld” |
| 第二周 | 100/150 | 2/4 | 20/20 | 学会用IDEA编写代码 |
| 第三周 | 100/250 | 2/6 | 20/20 | 掌握更多的语法知识 |
| 第四周 | 150/400 | 2/8 | 20/20 | 学会用Git托管代码 |
参考资料
- [Java学习笔记(第8版
- [《Java学习笔记(第8版)》学习指导]
20145329《Java程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- 《Java程序设计》第二学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
随机推荐
- MySql在Linux上实现每天自动备份
Mysql自动备份 创建存放备份sql的文件夹 mkdir /jimisun/mysqlBackup 测试命令行备份数据库 /usr/bin/mysqldump --opt -uroot -pjimi ...
- [Android Tips] 27. 检查 APK 是否可调试
使用 Android SDK 提供的 aapt 检查 APK 文件 $ aapt d badging ${APK_FILE} | grep 'application-debuggable' 检查自身 ...
- 配置Hibernate的流程
配置项目的前提下你应该配置好你的开发环境 1新建hibernate.cfg.xml文件,放在src目录里 <?xml version="1.0" encoding=" ...
- poj3233—Matrix Power Series
题目链接:http://poj.org/problem?id=3233 题目意思:给一个矩阵n*n的矩阵A和一个k,求一个式子 S = A + A2 + A3 + … + Ak. 这个需要用到等比数列 ...
- TabBar变透明
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
- file结构中的private_data
private_data是Linux下连接VFS文件系统框架和不同文件/文件系统底层实现之间的一个核心数据结构,虽然它只是一个指针,但是一个指针可以解决所有问题. 因 为file是VFS框架的一个基本 ...
- cpuspeed和irqbalance服务器的两大性能杀手
启用 irqbalance 服务,既可以提升性能,又可以降低能耗. irqbalance 用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于 Performance ...
- 关于spring的applicationContext.xml配置文件的ref和value之自我想法
今天在做SSH的一个项目的时候,因为需要定时操作,所以就再sping里面加入了一个quartz的小定时框架,结果在运行时候,发生了一个小bug. Caused by: org.springframew ...
- golang的指针和切片
首先为什么要讲go的指针和切片放在一起? 因为go指针和切片都是引用类型 引用类型就是说切片和指针保存的只是内存的地址,而不是具体的值,效率在大数据读取方面效率会高很多. 1.怎么定义一个切片 方法1 ...
- TypeError: cannot use a string pattern on a bytes-like object的解决办法
#!/usr/python3 import re import urllib.request def gethtml(url): page=urllib.request.urlopen(url) ht ...