Java 中的多态
1、引用的多态:意思就是父类的句柄既可以持有本类的对象,也可以持有子类的对象。

2、方法的多态:注意点是当父类句柄持有子类对象的时候,无法调用子类特有的方法。

多态中的引用类型转换
1、重写override的时候有个典型的向下转换,并且在转换之前执行了检查。

2、检查向下转换安全性的另一个方法:父对象 instanceof 子类。

Java 中的抽象类
1、通常用接口取代抽象类:a)两者都可以作为子类对象的持有者。b)两者都可以约定子类必须实现的方法。c)实现接口相比继承抽象类复杂度更低。

2、接口和抽象类的差异在于:抽象只能单继承,而一个类可以实现多个接口。

Java 中的接口
1、接口规定了一批类所需要遵守的规范,规定类里必须提供某些方法。

2、接口中的属性都是常量,即使定义时不显示设置public static final,系统也会自动加上。(并且不加是一种比较好的习惯,不做多余的事情。)

3、接口中的方法都是抽象方法,遵守一个接口就必须实现接口中的方法。

4、使用接口:类实现接口、作为对象持有者、与匿名内部类配合使用。

5、接口的命名规范:要与类区分,通常I开头或者InterfaceXX

ps:参考阿里的开发手册,接口规范Xxx配合XxxImpl,方法直接void f()而不要加上public abstract等前缀,接口常量也是一样,不要加多余的前缀。

匿名内部类(经常与接口配合使用)

/**
* Created by xkfx on 2017/3/11.
*/
public class TestAnimal {
public static void main(String[] args) {
// 使用匿名内部类的第一种方式
Animal a1 = new Animal() {
@Override
public void run() {
System.out.println("使用匿名内部类的第一种方式");
}
};
a1.run();
// 使用匿名内部类的第二种方式
new Animal() {
@Override
public void run() {
System.out.println("使用匿名内部类的第二种方式");
}
}.run();
}
}
/**
*         ┏┓   ┏┓
*        ┏┛┻━━━┛┻┓
*        ┃       ┃  
*        ┃   ━   ┃
*        ┃ >   < ┃
*        ┃       ┃
*        ┃... ⌒ ... ┃
*        ┃       ┃
*        ┗━┓   ┏━┛
*          ┃   ┃ Code is far away from bug with the animal protecting          
*          ┃   ┃ 神兽保佑,代码无bug
*          ┃   ┃           
*          ┃   ┃       
*          ┃   ┃
*          ┃   ┃           
*          ┃   ┗━━━┓
*          ┃       ┣┓
*          ┃       ┏┛
*          ┗┓┓┏━┳┓┏┛
*           ┃┫┫ ┃┫┫
*           ┗┻┛ ┗┻┛
*/

UML 简介(用的并不多)

1、用例图:表达用户需求。

2、序列图:对象间的交互关系。

3、类图:最常用。

《Java入门第二季》第四章 多态的更多相关文章

  1. Java入门第二季——第4章 多态

    第4章 多态 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作 4-1 Java 中的多态 注意:不能通过父类的引 ...

  2. Java入门第二季第2章封装

    什么是 Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里 ...

  3. 《Java入门第二季》第一章 类和对象

    什么是类和对象 如何定义 Java 中的类 如何使用 Java 中的对象 Java中的成员变量和局部变量1.成员变量:在类中定义,描述构成对象的组件. 2.局部变量:在类的方法中,用于临时保存数据. ...

  4. Java入门 第二季第三章 继承

    这是我学习慕课网Java课程的笔记,原视频链接为:http://www.imooc.com/learn/124 3-1 Java 中的继承  ★ 概念:继承是类与类的一种关系,是一种 "is ...

  5. JAVA入门第二季(mooc-笔记)

    相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第二季&g ...

  6. Java入门第二季学习总结

    课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习.由于该季涉及到了java的一些核心内容,所以相对第一季来说,课程难度有所提升.大致可将该季的课程分为五部分: ...

  7. JAVA入门第二季 第一章 类和对象

    面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...

  8. Java入门第二季第一章类和对象知识点

    Java 中的 static 使用之静态方法 1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员.如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问 ...

  9. 《Java入门第二季》第三章 继承

    Java 中的继承1.作用:代码复用. 2.语法:extends关键字. 3.注意点:私有(private)财产(methods.fields)不可继承. Java 中的方法重写 Java 中的继承初 ...

随机推荐

  1. sql语句如何删除最后一条和第一条信息

    这是先前建好的SQL数据库中的test表, sql语句: delete a from test a,(select max(id) id from test) b where a.id = b.id ...

  2. PostgreSQL数据库smallint、bigint转到Oracle,要用什么类型替代? 是number么,那长度分别是多少?

    个人意见,仅供参考:smallint是有符号或无符号2字节的整数,范围是0-65,536,5位整数bigint是有符号或无符号8字节的整数,范围是0-18,446,744,073,709,551,61 ...

  3. c++11 数值类型和字符串的相互转换

    string和数值类型转换 c++11提供了to_string方法,可以方便的将各种数值类型转换为 字符串类型: std::string to_string(int value); std::stri ...

  4. java基础---->多个排序的拓展

    根据一些特定的规则,我们可以利用java的反射机制做到很有趣的封装. java的排序封装 一.定义一些comparator AmountComparatorAsc:amount升序 package c ...

  5. JS-高程3(更新中...)

    附录A 名词解析: const:声明常量,常量的值不能通过重新赋值来改变,并且在初始赋值后,不能重新声明.重新赋值了. 即:同一作用域中,常量名不能与其他变量或函数名重名.值也不能修改了. “常量是块 ...

  6. setTimeout/setInterval伪异步

    setTimeout(function(){alert(1);}, 1000); 在使用setTimeout.setInterval的时候,会传一个时间来控制代码的执行时机.在经过了设置的时间段后,代 ...

  7. 1296: [SCOI2009]粉刷匠[多重dp]

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1919  Solved: 1099[Submit][Statu ...

  8. SNMP信息泄露漏洞

    SNMP协议简介 名称:SNMP(Simple Network Management Protocol)简单网络管理协议 端口:161 协议:UDP 用途:SNMP代理者以变量呈现管理资料.管理系统透 ...

  9. JavaScript—文字自动变化为自定义颜色

    效果: JS代码: var ColorTimer; var Colorforn = 0; //颜色代码 var ColorArray = new Array("#00CCCC", ...

  10. R的grep和grepl

    grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, ...