Java中 接口是如何实现多态的特性的
Java中多态是个很难理解的概念,但同时又是非常重要的概念,Java三大特性(封装、继承、多态)之一,我们从字面上理解,就是一种类型的多种状态,一下通过卖小汽车的例子再次说明什么是多态,其中利用到了接口。
代码实例:
//汽车接口
interface Car{
//要求 接口中有:汽车名称和售价 String getName();
int getPrice(); }
//宝马类
class BMW implements Car{ @Override
public String getName() {
// TODO Auto-generated method stub
//return null;
return "宝马";
} @Override
public int getPrice() {
// TODO Auto-generated method stub
//return 0;
return 300000;
} } //奇瑞QQ
class CheryQQ implements Car{ @Override
public String getName() {
// TODO Auto-generated method stub
return "奇瑞QQ";
} @Override
public int getPrice() {
// TODO Auto-generated method stub
return 40000;
} }
//汽车出售店
class CarShop{
//收入
private int money=0; //卖出一部汽车
public void sellCar(Car car){
System.out.println("车型:"+car.getName()+"价格:"+car.getPrice());
//增加卖出车售价的收入
money+=car.getPrice();
}
//售车总收入
public int getMoney(){
return money;
}
}
测试类:
public class jieKouDemo {
public static void main(String[]args){
CarShop shop=new CarShop();
//卖出一辆宝马
shop.sellCar(new BMW());
//卖出一辆奇瑞QQ
shop.sellCar(new CheryQQ());
System.out.println("总收入:"+shop.getMoney());
}
}

注意事项总结:
继承是多态得以实现的基础。从字面上理解,多态就是一种类型(都是Car类型)表现出来的多种状态(宝马汽车的名称是BMW,售价300000;奇瑞汽车的名称是CheryQQ,售价是40000)。将一个方法调用同这个方法所属的主题(也就是对象或类)关联起来叫做绑定。
绑定分为:前期绑定和后期绑定。
1.前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。比如static方法和final方法。注意,这里也包括private方法,因为他是隐式final的。
2.后期绑定:在运行时根据对象的类型进行绑定。由调用机制实现,因此又叫做动态绑定,或运行时绑定。除了前期绑定之外的所有方法都属于后期绑定。

Java中 接口是如何实现多态的特性的的更多相关文章
- 转载 - java中接口的向上转型。和多态性
发现一篇对接口总结很精简的文章 1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样, 向上转型了,可以很好的利用接口,可 ...
- Java中接口和抽象类的比較
Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...
- [转帖]Java中重写和重载与多态的关系
Java中重写和重载与多态的关系 2019-09-05 00:57:41 留下一天今天 阅读数 67 收藏 更多 分类专栏: java进阶之路 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- 浅谈Java中接口与抽象类的异同
浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...
- java中封装,继承,多态,接口学习总结
### 一:封装java中封装是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问.要访问该类的代码和数据,必须通 ...
- 【Java基本功】一文了解Java中继承、封装、多态的细节
本节主要介绍Java面向对象三大特性:继承 封装 多态,以及其中的原理. 本文会结合虚拟机对引用和对象的不同处理来介绍三大特性的原理. 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来 ...
- java中接口的定义
使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interface 接口名 [ ...
- java中接口的概念及使用(补充final修饰符的使用)
接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...
- Java 中接口和抽象类的 7 大区别!
本文已收录<Java常见面试题>:https://gitee.com/mydb/interview Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象.封装.继承和 ...
随机推荐
- async/await的特殊的地方
一:async如果是用于方法声明里,那么要求这个方法的返回值必须是Task.Task<TResult>.void这三种,而且await出现的地方要求其所在的方法必须是async修饰的方法: ...
- pyhon_day1 格式化输出
格式化输出 我们在写Python的在很多时候输出的内容需要规定格式的,这样就引入到了格式化输出 定义: 盗用下大咖的例子: ------------ info of alex ----------- ...
- RS232、RS485和RS422
一.232电平.TTL电平和CMOS电平 1.232电平:逻辑1:-3V--15V: 逻辑0:+3-+15V. 2.TTL电平:逻辑1:5V: 逻辑0:0V.具体是,输出高电平:VOH≥ ...
- bzoj3514(主席树+lct)
把边的编号看成边权,维护每个状态对应的最大生成树,得到一个数组a[i],表示第i条边在这个过程中替换的是那条边,询问时看一下a[l,r]内啊有多少个小于l的算一下答案就好:代码参考:http://bl ...
- HDU 1171 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=1171 基础的01背包,求出总值sum,背包体积即为sum/2 #include<stdio.h> # ...
- docker 容器和镜像理解
1.镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器.容器和镜像是一对一的,一个容器里就运行一个镜像. 1.base镜像----提供了一个基本的操作系统环境,用户可以根据需要安 ...
- SDWebImage之SDWebImageDownloader
SDWebImageDownloader完成了对网络图片的异步下载工作,准确说这个类是一个文件下载的工具类,真正的网络请求是在继承于NSOperation的SDWebImageDownloaderOp ...
- 学习WPF——使用Font-Awesome图标字体(一)
一.运行效果图 二.图标字体文件下载 http://fontawesome.dashgame.com/(这个网址可以下载图标字体文件) http://www.fontawesome.com.cn/(这 ...
- 浅谈ESB中的DataRow、DataSet、DataBag 、DataBox
1 背景概述 笔者在学习公司产品AEAI ESB 的时候经常需要从数据库获取信息并将数据信息保存到一个结果变量中,为统计分析提供特定格式的数据以及跨数据库同步数据时通常会用到DataRow.DataS ...
- Spring Boot国际化开发实战
本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持,根据系统语言环境或者session中的语言来自动读取不同环境中的文字. 国际化自动配置 Spring Boot中已经 ...