接口
(1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合 接口不能创建对象
(2)格式:
父接口:
public interface Inter
{

}

子类:
public class InterImpl implements Inter
{

}
(3)接口的特点:
A:不需要被abstract修饰。
B:类实现接口,可以单实现,还可以多实现。
C:接口可以继承接口,可以单继承,也可以多继承。
D:接口与父类的功能可以重复,均代表要具备某种功能。
(4)抽象类和接口的区别:
A:成员的区别
抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法,用于子类实例化使用。
成员方法:可以是抽象的,也可以是非抽象的。

接口:
成员变量:只能是常量。
默认修饰符:public static final
成员方法:只能是抽象的。
默认修饰符:public abstract

推荐:默认修饰符请自己永远手动给出。

B:类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。

类与接口:
实现关系,可以单实现,也可以多实现。
类还可以在继承一个类的同时实现多个接口。

接口与接口:
继承关系,可以单继承,也可以多继承。

C:体现的理念不同
抽象类里面定义的都是一个继承体系中的共性内容。

接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。

多态
(1)同一个对象,在不同时刻表现出来的不同状态。
举例:水(水,冰,水蒸气)
猫(猫,动物)

(2)前提:
A:有继承或者实现关系。
B:有方法的重写。
C:有父类(接口)的引用指向子类对象。
(3)多态中的成员使用特点:
Fu fz = new Zi();
多态时,所有表现形式都是父类的表现形式,
只有调用方法时,运行的是子类重写的方法
A:成员变量
编译看左边,运行看左边。
B:成员方法
编译看左边,运行看右边。

class Fu {
int num=4;
void show() {
System.out.println("showFu");
}
}
class Zi extends Fu {
int num=5;
void show() {
System.out.println("showZi");
}
}
class T {
public static void main(String[] args) {
Fu f=new Zi();
System.out.println(f.num);
f.show();

}

(4)多态中的转型:
A:向上转型
把子类对象赋值给父类(接口)的引用 自动类型提升 int a = 0; double b =a;

Fu fz = new Zi();
B:向下转型
把父类(接口)的引用强制转换成子类对象
double b = 10.0;
int a = (int)b;

Fu fz = new Zi();
Zi zf = (Zi)fz;

注意:Fu fu = new Fu() 不能向下转型 会报ClassCastException 类型转换异常

(5)多态的好处及弊端:
A:好处
提高了程序可维护下和可扩展性。

B:弊端
不能使用子类特有内容。
要想使用,要么向下转型,要么重新创建子类对象。
(6)多态的三种形式:
A:具体的类多态 父类 变量名 = new 子类();
B:抽象类多态 父抽象类 变量名 = new 子类();
C:接口多态 接口 变量名 = new 实现类();
instanceof 关键字
格式: 对象名 instanceof 类名
返回值: true, false
作用: 判断指定的对象 是否为 给定类创建的对象

Animal a1 = new Cat();

Animal a2 = new Dog();

method(a1)

public static void method(Animal a){
if(a instanceof Cat){
向下转型
调用猫特有方法
}

}

转载于:https://www.cnblogs.com/jia-/p/6937582.html

我的学习之路_第二章_接口/多态相关推荐

  1. 【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模

    2 Verilog HDL的设计方法学--层次建模 重要的思想: 在语文教学中,应该先掌握核心方法论,再用正确的方法论去做题目,这样能够逐渐加深对于方法论的理解,做题的速度和准确率也会越来越高. 在V ...

  2. 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统

    2 C++基础语法学习(1)之黑客攻击系统 遵循原则:从实战中学习知识 法律声明:本系统仅能攻击自己搭建的网站,作为学习使用,不会触犯法律 time:2020.01.20 author:姜海天 IDE ...

  3. 系统架构师学习笔记_第二章_连载

    <计算机网络基础知识> 计算机系统 由 硬件和软件组成,软件通常分为 系统软件和应用软件. 系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它. 常用 ...

  4. 深入理解计算机系统_第二章_信息的表示和处理

    深入,并且广泛-沉默犀牛 文章目录 文章导读 信息的表示和处理 信息存储 十六进制表示法 字数据大小 寻址和字节顺序 表示字符串 表示代码 布尔代数简介 C语言中的位级运算 C语言中的逻辑运算 C语言 ...

  5. 模电_第二章_半导体二极管

    文章目录 基础 发光二极管 二极管分类 单向导电性 伏安特性曲线 齐纳二极管(稳压管) 应用电路 稳压电路 开关电路 整流电路 半波整流电路 桥式整流电路 限幅电路 串联型上限幅电路 串联型下限幅电路 ...

  6. 密码(图解密码技术)_第二章_历史上的密码

    凯撒密码 凯撒密码是一种相传尤利乌斯·凯撒曾使用过的密码.凯撒于公元前100年左右诞生于古罗马,是一位著名的军事统帅. 凯撒密码是通过字母按照一定的字数"平移"来进行加密的. 举例 ...

  7. 网络爬虫_第二章_提取_第四单元_BeautifulSoup库入门(未完待续)

    1.Beautiful Soup库的基本元素 Beautiful Soup库的理解 <p>..</p>: 标签:Tag<p> p指的是标签的名字, Name成对出现 ...

  8. celeste第二章_蔚蓝_第二章_初露锋芒_免费小说阅读_飞卢小说网

    战场指挥部. 一个壮汉大刀阔斧的坐在椅子上,指着显示屏上的周围. "刘参谋,那个小子是谁?很不错!" 从这壮汉的着装看去,是一位蔚蓝联盟将军. 一旁的刘参谋看了将军一眼,快速调动资 ...

  9. 利用python进行数据分析_第二章_案例2_movielens_电影评分分析

    自己尝试了一下数据分析,和书里的方法不完全一样.标*的为比较好的方法. ================================================ MovieLens电影评分数据 ...

最新文章

  1. 卷积核输出特征图大小的计算 深度学习
  2. 【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
  3. 推荐一些冷门但是超级实用的工具
  4. JSP简单练习-获取表单数据
  5. Qt for ios / Qt for Android 设置透明状态栏
  6. python绘图函数m_Python散点图。m的尺寸和样式
  7. 全国计算机等级考试题库二级C操作题100套(第08套)
  8. java 多线程跑数据_java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁...
  9. Python基础-作用域和命名空间(Scope and Namespace)
  10. css文字排列 - 代码篇
  11. C#将另一个应用程序的窗口移动到前端的问题
  12. python 解析命令行
  13. tcp/ip协议初识
  14. ansible+packer+terraform在aws上布署web服务器
  15. 美国大学计算机科学博士生排名,usnews美国大学研究生计算机科学专业完整排名...
  16. 公司域名邮箱如何注册?163公司邮箱注册好用吗?
  17. 木偶然-2010.7.17
  18. 电路方程的矩阵形式 c语言,电路方程的矩阵形式
  19. 成都,今夜请将我遗忘 读后感
  20. 跨站请求伪造 - CSRF

热门文章

  1. ip访问 webstorem_常见问题-iOS WebView IP直连 如何处理 Cookie
  2. 代理池proxypool新版使用教程
  3. dockerfile的详细介绍
  4. 条件随机场 python_如何直观地理解条件随机场,并通过PyTorch简单地实现
  5. 《数据库SQL实战》找出所有员工当前薪水salary情况
  6. ReactNative-触摸事件
  7. mysql中,一条select语句是如何执行的?
  8. 安装hadoop2.6.0伪分布式环境
  9. 创建ListView的基本步骤
  10. 广告中oCPX到底是如何进行优化的