教材学习内容总结

封装、继承、多态

封装:封装类私有数据,让用户无法直接存取。
继承:

定义:避免多个类间重复定义共同行为,就是相同的代码提升为父类,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关键字。

  1. 接口定义方法:操作接口定义的方法或者将该方法标示为abstract.

3.类可以操作两个以上的接口。

4.语法细节:接口的方法没有操作时,一定得是公开且抽象,为方便可省略public abstract.

final关键字

  1. 定义:限定不想再改变的指定变量值,如果被声明的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程序设计》第四周学习总结的更多相关文章

  1. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  2. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  3. 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...

  5. 20155318 2016-2017-2 《Java程序设计》第九学习总结

    20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...

  6. 《Java程序设计》第二学习总结

    <Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...

  7. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  8. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  9. 20145120黄玄曦 《java程序设计》 寒假学习总结

    1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...

  10. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

随机推荐

  1. 170420、maven内置常量

    Maven工程插件配置中通常会用到一些Maven变量,因此需要找个地方对这些变量进行统一定义,下面介绍如何定义自定义变量. 在根节点project下增加properties节点,所有自定义变量均可以定 ...

  2. 170314、工具:apache httpClient多线程并发情况下安全实用及工具类分享

    简单用法介绍:介绍来源网络 建立连接:在HttpClient中使用多线程的一个主要原因是可以一次执行多个方法.在执行期间,每一个方法都使用一个HttpConnection实例.由于在同一时间多个连接只 ...

  3. 170309、MySQL存储引擎MyISAM与InnoDB区别总结整理

    1.MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB. 2.MyISAM与InnoDB存 ...

  4. Zabbix监控主动模式

    接上篇:Zabbix监控web,MySQL,TCP状态,Nginx 参考官方文档:https://www.zabbix.com/documentation/3.4/zh/manual zabbix默认 ...

  5. 解决;R语言使用sqldf库是报错"Failed to connect to database: Error: Access denied for user '..'@'localhost' (using password: NO) Error in !dbPreExists : invalid argument type"

    原因:在使用sqldf时,不需要加载RMySQL库 解决方案:在控制台执行释放RMySQL库加载 detach("package:RMySQL", unload=T);

  6. POJ3660 传递闭包———floyd算法

    POJ3660 Cow Contest 题目链接:http://poj.org/problem?id=3660 题意:农名约翰有些奶牛,约翰通过让他们决斗来决定他们的排名,约翰让这些奶牛一对一打完一定 ...

  7. setMasksToBounds

    setMasksToBounds 在IB中,当你使用Custom类型的Button时,你可以指定按钮的背景色.但当你运行时按钮就失去了圆角特性,你看到的仅仅是一个方块.因为custombutton没有 ...

  8. oracle 归档空间满的解决办法

    问题现象: 通过命令提示符登陆数据库,一般提示“ora-03113:通信通道的文件结尾”错误,查看trace日志,可以看到详细信息.部分摘录如下(橙色部分给出了建议方案): Errors in fil ...

  9. Exception in thread "main" java.lang.UnsupportedClassVersionError: * : Unsupported major.minor version 52.0 解决办法

    Exception in thread "main" java.lang.UnsupportedClassVersionError: * : Unsupported major.m ...

  10. 在Win10上,Android Studio检测不到设备的解决方案

    下载ADB驱动程序安装器 运行ADBDriverInstaller.exe,可以看到设备状态不正常,点击Install 可能会弹出这样的对话框,点击Got it, Restart Now,按照提示完成 ...