多态&接口
多态
多态定义:允许一个父类变量引用子类的对象;允许一个接口类型引用实现类对象。
多态的调用:使用父类的变量指向子类的对象;所调用的属性和方法只限定父类中定义的属性和方法,不能调用子类中特有的属性和方法,
多态主要应用为多态参数和多态对象
package JobTest;
abstract class Job {
public abstract void work();// 为了方便进行多态调用
}
class Teacther extends Job {
@Override
public void work() {
System.out.println("上课");
}
}
class Cookies extends Job {
@Override
public void work() {
System.out.println("做饭");
}
}
class Driver extends Job {
@Override
public void work() {
System.out.println("开车");
}
}
package JobTest;
public class JobTest {
public static void main(String[] args) {
Job a=new Teacther();//父类类型变量a指向子类对象teacther
Job b=new Cookies();//父类类型变量b指向子类对象Cookies
Job c=new Driver();//父类类型变量c指向子类对象Driver
a.work();
b.work();
c.work();
}
}
以上实例是简单使用多态实例,父类Job分别使用变量指向子类对象Teacher/Cookies/Driver;
如果一个类继承抽象类,那么必须重写抽象类中所有抽象方法(@Override)
接口
接口可以看做抽象类的特例
接口中只能定义抽象方法,接口可以看做行为的抽象。
接口中的方法只能是public
接口中变量为public static final
public interface Iwash {
public abstract void wash();
}
class Mun implements Iwash{
@Override
public void wash() {
System.out.println("手洗");
}
}
class Washer implements Iwash {
@Override
public void wash() {
System.out.println("电机搅动");
}
}
public class TestWash {
public static void main(String[] args) {
Iwash w = new Mun();
w.wash();
}
}
实例中建立一个Iwash接口,Mum和Wash都有wash这个行为,所以都有Iwash接口
接口用于在不同的类实例当中,共享通用行为,重用方法。
接口和多态的概念不是很难,但是在于灵活运用。
多态&接口的更多相关文章
- C#基础总结之八面向对象知识点总结-继承与多态-接口
.方法深入讲解(返回值,形参与实参) 方法 public int getName(int i,int j) { int sum = i + j; return sum; } .利用泛型存储对象数据 . ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
# 多态的理解:# Python 天生自带多态# 鸭子类型 list 和 tuple 就是一对鸭子类型 很像但是没有继承关系## 而其他的类型 上传参数或者打印参数的时候 必须是指定的数据类型# -- ...
- 学习博客之Java继承多态接口
这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承.多态和接口 Java的继承 继承是面向对象的三大特性之一,能够实现软件的复用. Java子类继承父类的 ...
- 1.Java基础-面向对象编程思想(封装继承多态接口)
封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的 ...
- go语言多态接口样例
感觉比java玄幻啊~~~ package main import ( "fmt" ) type notifier interface{ notify() } type user ...
- Java 多态 接口继承等学习笔记
Super关键字 1.子类可以调用父类声明的构造方法 : 语法:在子类的构造方法中使用super关键字 super(参数列表) 2.操作被隐藏的成员变量(子类的成员变量和父类的成员变量重名的说法)和 ...
- Java第4次实验提纲(面向对象2-继承、多态、抽象类与接口与Swing)
PTA 题集面向对象2-进阶-多态接口内部类 第1次实验 1.1 题集5-1(Comparable) 难点:如果传入对象为null,或者传入对象的某个属性为null,怎么处理? 1.2 题集5-2(C ...
- java接口,接口的特性,接口实现多态,面向接口编程
package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...
随机推荐
- PAT_A1138#Postorder Traversal
Source: PAT A1138 Postorder Traversal (25 分) Description: Suppose that all the keys in a binary tree ...
- Python爬虫:HTTP协议、Requests库(爬虫学习第一天)
HTTP协议: HTTP(Hypertext Transfer Protocol):即超文本传输协议.URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源. HTTP协议 ...
- flex记忆
._rebate { display: -webkit-box; display: -moz-box; display: -webkit-flex; display: -moz-flex; displ ...
- Ecshop模板中html_options用法详解
程序部分 <?php $smarty->assign('status_list', $_LANG['cs']); // 订单状态 $smarty->display("ind ...
- mysql查询昨天 一周前 一月前 一年前的数据
mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB, 参考如下 代码如下: SELECT * FROM yh_contentwhere inputtime>DATE_ ...
- android的数据与访问(2)-delphi xe7如何存取我的app配置参数文件?
这种方法不推荐,因为该SharedPreference是android的方法.你想跨平台,在ios上就不能使用.建议还是用ini or xml.android因为读写该二种文件比较繁琐,所以推出自己简 ...
- (26)改变自动扫描的包【从零开始学Spring Boot】
在开发中我们知道Spring Boot默认会扫描启动类同包以及子包下的注解,那么如何进行改变这种扫描包的方式呢,原理很简单就是: @ComponentScan注解进行指定要扫描的包以及要扫描的类. 接 ...
- Basic Memory Structures
Basic Memory Structures The basic memory structures associated with Oracle Database include: System ...
- mysql 与elasticsearch实时同步常用插件及优缺点对比(ES与关系型数据库同步)
前言: 目前mysql与elasticsearch常用的同步机制大多是基于插件实现的,常用的插件包括:elasticsearch-jdbc, elasticsearch-river-MySQL , g ...
- Git的基本设置
进入虚拟机环境中:首先我们对 Git 进行用户名和邮箱进行设置,请参照下面格式,替换为你自己常用的用户名和邮箱来完成设置: $ git config --global user.name " ...