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

  1. 修改代码a[]中添加自己的学号,输入的数据中要有自己的学号
  2. 提交运行结果截图,要有找到和找不到的情况,要对边界值进行测试

实践二

0 在Ubuntu中用自己的有位学号建一个文件,教材p45 Example3_7

  1. 修改代码中的100为自己学号的后四位,输入的数据中要有自己的学号
  2. 提交运行结果截图

实践三

参考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第四周学习笔记的更多相关文章

  1. 20165326 java第四周学习笔记

    第四周学习笔记 ch5 子类和父类 子类只能有一个父类 使用关键字extendsyclass 子类 extends 父类 系统默认的祖先类Object(java.lang包中) 继承:子类继承父类的方 ...

  2. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  3. Java多线程技术学习笔记(二)

    目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...

  4. Java安全防御学习笔记V1.0

    Java安全防御学习笔记V1.0http://www.docin.com/p-766808938.html

  5. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  8. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  9. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

随机推荐

  1. 11 tensorflow在tf.while_loop循环(非一般循环)中使用操纵变量该怎么做

    代码(操纵全局变量) xiaojie=1 i=tf.constant(0,dtype=tf.int32) batch_len=tf.constant(10,dtype=tf.int32) loop_c ...

  2. 深入理解SVG坐标体系和transformations- viewport, viewBox,preserveAspectRatio

    本文翻译自blog: https://www.sarasoueidan.com/blog/svg-coordinate-systems/ SVG元素不像其他HTML元素一样受css盒子模型所制约.这个 ...

  3. 优化 ExpressRoute 路由

    当你有多个 ExpressRoute 线路时,可以通过多个路径连接到 Azure.结果就是,你所采用的路由可能不是最理想的 - 也就是说,你的流量可能会经历较长的路径才能到达 Azure,而 Azur ...

  4. phantomJs页面操作

    因为phantomjs能加载和操纵页面,它可以自动化地完美执行页面的各种操作. 操作文档: 脚本的被执行,就像它真的正在web 浏览器上运行一样. 下面的脚本,是读取元素id为myagent的文本内容 ...

  5. 写markdown用于Github上readme.md文件

    Markdown 文档地址 http://pan.baidu.com/s/1o6nu9To Markdown还有一系列衍生版本,用于扩展Markdown的功能(如表格.脚注.内嵌HTML等等),这些功 ...

  6. 解决win 和 ubuntu 虚拟机之间 无法 复制粘贴的问题,以及重装vmtool后,还是无法解决的办法

    第一步:重新安装vmware-tool 我这里已经装过了,所以显示这个,不然应该是显示:安装 VMware Tools 它会打开一个文件夹,把压缩包复制到任一个地方解压,执行.pl的那个文件:sudo ...

  7. Gerrit安装配置

    环境: CentOS 1611 + gerrit-2.11.4 (review.openstack.org) 1. 安装java1.8 (>1.7) [root@review ~]# yum i ...

  8. Java代理全攻略【有瑕疵:字节码生成部分没看到,最后两节没仔细看,累了】

    Java代理 1.代理模式 定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象. 其实就是委托.聚合.中间人. 为了保持行为的 ...

  9. 关于markdown格式的测试..

    标题 标题一 这是? 标题二 标题三 标题四 区块 1.这是一个列表项目 还是吗? 嵌套了? 空格了? 区块加列表 标题加二级列表 嘿嘿 无序列表 RED GREEN BLUE 有序列表 dog ca ...

  10. html操作

    HTML(hyper text markup language): 超文本标记语言,标准通用标记语言下的一个应用. 超文本就是指页面内可以包含图片.连接.音乐.程序等非文字元素. 超文本标记语言的结构 ...