20155327 java第四周学习笔记
20155327 java第四周学习笔记
五六章知识整理
1子类与父类
父类是接口或者是抽象类,子类必须继承自父类。
2子类的继承性
在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不允许多继承。
3子类与对象:
1.子类要为父类的私有属性单独的在堆里开辟空间,这个空间不属于任何一个对象,原因是私有属性要使用必须要有个空间,并默认初始化,不会为父类的私有方法在堆里开辟空间,原因是私有方法在方法区。
2.为子类开辟空间,为继承自父类的属性开辟空间,并为在父类里定义的、子类继承的方法开辟方法空间,然后为子类新增的方法开辟空间,(继承的方法的空间和新增的属性和方法的空间)
3.一定会把子类的对象地址传到父类的构造方法,调用父类的构造方法,到类里头绑定的属性寻找并初始化,为子类继承的属性私有化,和为子类不能继承的属性私有化。若父类的构造方法是私有的,则子类对象不能创建,编译会出错
4.调用子类的构造方法可以初始化子类新增的属性,和继承父类的属性和方法初始化。
4成员变量的隐藏和方法重写
在Java的子类与父类中有两个名称、参数列表都相同的方法的情况。由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法。
正是因为Java在继承中有方法的重写,所以,这也体现了Java的动态多态性。
5继承与多态
继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。java中的继承要使用extends关键字,并且java中只允许单继承,也就是一个类只能有一个父类。
多态,把子类对象主观的看作是其父类型的对象,那么父类型就可以是很多种类型。实现多态,有二种方式,覆盖,重载。
关系:继承可以复用代码,更大的用处是实现「多态」
封装是继承的基础,继承是多态的基础
「用父类声明对象引用,用子类生成对象」就有了多态
接口
接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。
接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。
接口中成员的特点
1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解fnal关键字
2、接口中可以定义方法,方法也有固定的修饰符,public abstract
3、接口不可以创建对象。
4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。
接口与多态
A:类与类之间:继承关系,一个类只能直接继承一个父类,但是支持多重继承
B:类与接口之间:只有实现关系,一个类可以实现多个接口
C:接口与接口之间:只有继承关系,一个接口可以继承多个接口
码云
课堂实践
实践一
0 在Ubuntu中用自己的有位学号建一个文件,教材p29 Example2_5
- 修改代码a[]中添加自己的学号,输入的数据中要有自己的学号
- 提交运行结果截图,要有找到和找不到的情况,要对边界值进行测试

实践二
0 在Ubuntu中用自己的有位学号建一个文件,教材p45 Example3_7
- 修改代码中的100为自己学号的后四位,输入的数据中要有自己的学号
- 提交运行结果截图

实践三
参考http://www.cnblogs.com/rocedu/p/6766748.html 编程实现1!+2!+3!+... + N!的功能
N由命令行传入,比如类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值
提交运行结果的截图(至少五张),注意测试正常,异常,边界情况, 比如java SumofRecur -8,java SumofRecur 0,java SumofRecur 你的学号后四位

命令行参数:Java程序运行时,会调用main方法,args就是命令行参数。
代码如下:
public class test3 {
public static void main(String args[]){
int tmp[]=new int [args.length];
for(int i=0;i<args.length;i++){
tmp[i]=Integer.parseInt(args[i]);
}
long sum=0;
if(tmp[0]<=0){
System.out.println("wrong!");
System.exit(0);
}
for(int i=1;i<=tmp[0];i++){
sum += fact(i);
}
System.out.println(sum);
}
public static long fact(int i) {
if(i==1)
return 1;
else
return i * fact(i-1);
}
}
把代码推送到
实践四
1 参考 http://www.cnblogs.com/rocedu/p/6371262.html 调试上一个程序
2 通过命令行传入3
3 提交N=1 , N=2, N=3时的结果截图
JDB调试步骤:
1,使用javac -g test3.java对程序进行编译。注意javac中-g参数是为了产生各种调试信息,一定要加上,否则无法调试。
2,使用jdb test3 N对程序进行调试
3,通过运行stop in test3.main命令在main方法开始处设置断点
4.输入run命令来运行test3.class,程序会在main()的开始处停下。可以用locals命令查看变量,用step命令运行下一行代码
5.使用quit或exit可以退出JDB。



20155327 java第四周学习笔记的更多相关文章
- 20165326 java第四周学习笔记
第四周学习笔记 ch5 子类和父类 子类只能有一个父类 使用关键字extendsyclass 子类 extends 父类 系统默认的祖先类Object(java.lang包中) 继承:子类继承父类的方 ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- Java多线程技术学习笔记(二)
目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...
- Java安全防御学习笔记V1.0
Java安全防御学习笔记V1.0http://www.docin.com/p-766808938.html
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
随机推荐
- apache软件no_ssl和openssl两种类型的区别
apache软件同一版本有两种类型:no_ssl和openssl: openssl多了个ssl安全认证模式,它的协议是HTTPS而不是HTTP,这就是带有SSL的服务器与一般网页服务器的区别了. 一般 ...
- 使用 Azure CLI 创建和管理 Linux VM
Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...
- Singleton单例模式--C++实现
1. 只支持单线程 (不推荐) #include <iostream> using namespace std; class Singleton { public: static Sing ...
- iOS8中的定位服务
iOS8中的定位服务 My app that worked fine in iOS 7 doesn't work with the iOS 8 SDK. CLLocationManager doesn ...
- Springboot 设置session超时
使用版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
- 高性能网站架构缓存——redis集群
相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的实际应用中,使用redis肯定不会使用单机版,不光是redis不能使用单机版,其他的也不会使用,所以今天我们来说一下re ...
- JedisPool无法获得资源问题
线上碰到一个问题:redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the ...
- Hadoop学习之路(九)HDFS深入理解
HDFS的优点和缺点 HDFS的优点 1.可构建在廉价机器上 通过多副本提高可靠性,提供了容错和恢复机制 服务器节点的宕机是常态 必须理性对象 2.高容错性 数据自动保存多个副本,副本丢失后,自动 ...
- C# 数字证书 RSA加密解密 加签验签
KeyValuePair<string, string> keyPair = Encrypter.CreateRSAKey(); string privateKey = keyPair.V ...
- 详解Tensorflow数据读取有三种方式(next_batch)
转自:https://blog.csdn.net/lujiandong1/article/details/53376802 Tensorflow数据读取有三种方式: Preloaded data: 预 ...