第九次课

目标

1、  多态

2、  抽象类

3、  接口

4、  内部类(了解)

一、多态polymorphism

追求”高内聚低耦合”通过三大特性: 封装继承及多态来实现。

多态:多种形态,”出去买水果?” ,多态发生在运行期的行为,编译看父类型,运行找子对象。

1、条件

1)、继承  2)、重写(没有重写,延续方法)   3)、父类的引用=子类的对象

2、新增方法

发生多态时,对新增方法不可见。

强制类型转换成功,可以使用新增方法

3、两种表现形式

1)、形参使用父类型

2)、返回类型使用父类型

4、类型转换

1)、自动|向上(upcasting)|多态

父类  =子类对象

2)、强制|向下(downcasting)

子类  = (子类)父类指向的对象

注意: 正确的发生多态才能够转换成功,否则错误

instanceof à关系运算符,检查引用所指向的对象(右边)的类型,是否本类型|父类型,必须在继承链上。

常见的错误: 转换错误java.lang.ClassCastException

二、抽象类

由abstract修饰的类,称为抽象类,此抽象类不能实例化,待子类实例(多态),通常用作工具类、模板(不变+可变),称为部分规范。

1、定义格式

public abstract class Xxx{

}

2、特点

1)、abstract 修饰  ,不能使用final 修饰,因为必须存在子类

2)、不能实例化,待子类实例化;存在构造器

3)、可能存在抽象方法,抽象类可以没有抽象方法

3、抽象方法

由abstract修饰的没有方法体({})的方法,注意; 结束。

1)、抽象类可以没有抽象方法

2)、抽象方法一定存在于抽象类中

三、接口

接口 interface ,完全规范、标准 ,like 如: USB接口,具有连接电脑、传输数据等功能。接口只有全局常量和公共的抽象方法,看成特殊的抽象类。

1、格式

[public] /*abstract*/ interface 接口名{

//全局常量

/* public static final*/  类型常量名=赋值;

//公共的抽象方法

public abstract 返回值类型|void 方法名([形参列表]);

}

2、类与接口

Implements 多实现接口

3、接口与接口:

多继承 (了解)

4、空接口

给jvm 通行证

1)、java.lang.Cloneable

2)、java.io.Serializable

四、内部类(了解)

内部类: 类变成了类中类、方法中的类

1、类中类

实例化:

2、方法中类

3、匿名内部类(重点)

五、eclipse 调试

目的: 理解程序的执行流程、排除错误。

java学习第八天的更多相关文章

  1. 学习java的第八天

    一.今日收获 1.学习完全学习手册上2.3转义字符与2.4运算符两节 二.今日难题 1.没有什么难理解的问题 三.明日目标 1.哔哩哔哩教学视频 2.Java学习手册

  2. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

  3. JAVA学习前十天:小结、面向对象之”扑克牌“例子

    2016年4月26号正式步入JAVA学习课堂,学习了第一节JAVA课程,由于以前有C语言基础,所以课程有点快! 第一天:学习了教材的第一部分,第一部分总共两章,分别是JAVA简介和JAVA基础语法. ...

  4. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  5. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  6. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  7. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  8. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  9. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

随机推荐

  1. Javascript之对象的继承

    继承是面向对象语言一个非常重要的部分.许多OOP语言都支持接口继承和实现继承两种方式.接口继承:继承方法签名:实现继承:继承实际的方法.在ECMAScript中函数是没有签名的,所以也就无法实现接口继 ...

  2. 500 TypeError: Cannot read property 'connect.sid' of undefined

    1:在写passport验证测试用例时,发现有几个引用中间件顺序的错误,检查发现,passport验证写的是session,在传错误信息的时候req.flash调用也需要用到session中间件,否则 ...

  3. Hdu4349 Xiao Ming's Hope

    Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. [转]iOS/iphone开发如何为苹果开发者帐号APPID续费

    原文地址:http://blog.sina.com.cn/s/blog_68661bd80101nme6.html 其实相当的简单,这篇内容是给财务看的,有的地方连我自己看了都感觉有点...但如果不详 ...

  5. Loadrunner 使用检查点

    在使用loadrunner 测试时,比如我们在登陆时,我们希望说登录是否成功.这个时候我可以使用检查点函数. 检查登录后,页面上是否返回了某个标识,这样我们可以根据标识判断登录事务是否成功.   现在 ...

  6. Ext grid checkbox 分页 翻页 勾选 问题

    timeArray = new Array(); //临时数组变量 var timeStatusBar = new Ext.ux.StatusBar({ id: 'statusbar', defaul ...

  7. linux-虚拟机安装

    第一步:下载 安装虚拟机! 链接: http://pan.baidu.com/s/1nuGLwsL 密码: 2qdy 第二步:镜像文件! 链接: http://pan.baidu.com/s/1nuG ...

  8. 【STL】-Map/Multimap的用法

    初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...

  9. POJ 3525 半平面交+二分

    二分所能形成圆的最大距离,然后将每一条边都向内推进这个距离,最后所有边组合在一起判断时候存在内部点 #include <cstdio> #include <cstring> # ...

  10. exit(0)与exit(1)、return区别

    exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...