多态and接口
一、多态
1、什么是多态?
解析:不同的对象对于同一个操作,做出的响应不同
具有表现多种形态的能力的特征
2、使用多态的优点
解析:为了实现统一调用
一个小例子:<父类类型作为参数>
父类(Pet) 子类(Gog,Penguin) 主人类(Master)测试类(Test)
Pet
public abstract class Pet {
public abstract void eat();
}
Dog
public class Dog extends Pet{
@Override
public void eat() {
System.out.println("够吃骨头");
}
Penguin
public class Penguin extends Pet {
@Override
public void eat() {
System.out.println("企鹅吃fish");
}
Master
public class Master {
//父类类型作为参数
public void feed(Pet pet)
{
pet.eat();
}
}
Test
public static void main(String[] args) {
Master master=new Master();
Pet pet=new Dog();
master.feed(pet);
}
二、子类到父类的转换(向上转型)
规则:
① 将一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换
② 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法
③ 通过父类引用变量无法调用子类特有的方法
三、java中两种实现和使用多态的方式
① 使用父类作为方法形参
② 使用父类作为方法返回值
四、父类到子类的转换(向下转型)
将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。此时必须进行强制类型转换
五、instanceof运算符
语法:
对象 instanceof 类或接口
该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false
注:
① 使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误
② instanceof通常和强制类型转换结合使用
六、接口
在java语言中,接口有两种意思:
①概念性的接口,即系统对外提供的所有服务
②指用interface关键字定义的接口,也称为接口类型
定义:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合
语法:
【修饰符】 interface 接口名 extends 父接口1,夫接口2.......
class 类名 extends 父类名 implements 接口1,接口2.......
七、特征
① 接口中的成员变量默认都是public、static、final类型的,必须被显示初始化
②接口中的方法默认都是public、abstract类型的
③接口没有构造方法,不能被实例化
④一个接口不能实现另一个接口,但它可以继承多个其他接口

⑤接口必须通过类来实现它的抽象方法
⑥ 一个类只能继承一个直接父类,但能实现多个接口
八、语法
① 修饰符 interface 接口名 extends 父接口1,父接口2....{
//常量定义
//方法定义
}
② class 类名 extends 父类名 implements 接口1,接口2....{
//类成员
}
一个小例子:
使用java接口来模拟生活中的USB接口
1、先定义USB接口,通过service()方法提供服务
public interface Usbinterface{
void service();
}
2、定义U盘类,实现USB接口中的service()方法,进行数据传输
public class UDisk implementd UsbInterface{
public void service()
{
System.out.println("连接USB口,开始数据传输!");
}
}
3、定义USB风扇类,实现USB接口中的service()方法,获得电流使风扇转动
public class UsbFan implementd UsbInterface{
public void service()
{
System.out.println("连接USB口,获得电流,风扇开始转动!");
}
}
4、编写测试类
public class Test{
public static void main(String[]args){
//u盘
UsbInterface uDisk=new UDisk();
uDisk.service();
//USB风扇
UsbInterface usbFan=new UsbFan();
usbFan.service();
}
}
多态and接口的更多相关文章
- java匿名内部类,多态,接口练习
1多态以及接口调用方法: public class Interface { public static void main(String[] args) { Al x = new Al(); jian ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- java基础三 [深入多态,接口和多态](阅读Head First Java记录)
抽象类和抽象方法 1.抽象类的声明方法,在前面加上抽象类的关键词abstract abstract class canine extends animal{ public void roam ...
- Java基础第二天--多态、接口
多态 多态的概述 同一个对象,在不同时刻表现出来的不同形态 多态的前提和体现 有继承/实现关系 有方法重写关系 有父类引用指向子类对象 public class Animal { public voi ...
- C# 多态和接口
1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...
- java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;
一,构造方法的特点 面向对象的思想是如何在java展现的呢? 就是通过类和对象 类是一组相关的属性和行为的集合.是一个抽象的概念. 对象是该类事物的具体表现形式.具体存在的个体. 一.抽象类的抽象方法 ...
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
- 初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)
JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM, ...
- Java中关于继承、类、多态、接口的知识点
继承 含义:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类 优点:1)代码的重用性:2)子类扩展父类的属性和方法:3)父类的属性和方法可用于子类:4)设计应用程序 ...
随机推荐
- 一系列JavaScript的基础工具
在我们的bootcamp训练营中,学员们介绍了一些工具和库来扩展他们代码的能力.Kalina,目前我们JavaScript学员中的一员,列举了这些工具,想和其它爱好代码的小伙伴一起分享. 点击看大图 ...
- ASP.NET MVC 从IHttp到页面输出
MVCHandler应该算是MVC真正开始的地方.MVCHandler实现了IHttpHandler接口,ProcessRequest便是方法入口. MVCHandler : IHttpHandler ...
- Tomcat server分端口部署web项目
<?xml version='1.0' encoding='utf-8'?> <Server port="8006" shutdown="SHUTDOW ...
- sql盲注及其相关方法
Sql注入过程数据(后台数据不能回显到页面)不回显采用方法 1:构造逻辑判断 ▲left(database(),1)>’s’ //left()函数 ▲and ascii( ...
- POJ 1419
#include <iostream> #define MAXN 105 #define max _max using namespace std; int j; bool _m[MAXN ...
- AutoCompleteTextView的应用
现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoComplete ...
- HDU5569/BestCoder Round #63 (div.2) C.matrix DP
matrix Problem Description Given a matrix with n rows and m columns ( n+m is an odd number ), at fir ...
- lintcode:最小编辑距离
最小编辑距离 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数. 你总共三种操作方法: 插入一个字符 删除一个字符 替换一个字符 样例 给出 work1=&quo ...
- linux环境几个特殊的shell变量
特殊的shell变量: $0 获取当前执行的shell脚本的文件名 $n 获取当前执行的shell脚本的第n个参数值,n=1..9 $* 获取当前shell的所有参数 “$1 $2 $3 …注意 ...
- mq_open
NAME mq_open - 打开一个消息队列 (REALTIME) SYNOPSIS #include <mqueue.h> mqd_t mq_open(const char *name ...