多态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)设计应用程序 ...
随机推荐
- allow_url_include和allow_url_fopen
allow_url_fopen没什么好说的,主要是allow_url_include 从PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On的 ...
- visual studio 2012 Github
前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等一系列工具进行Copy,然后回家才能继续在原来的基础上作业. ...
- Android的事件处理机制(一)------基于回调机制的事件处理
Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理.Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通 ...
- 使用Subversion进行版本控制
使用Subversion进行版本控制 针对 Subversion 1.4(根据r2866编译) Ben Collins-Sussman Brian W. Fitzpatrick C. Michael ...
- 与Wii控制手柄通信的托管代码库(转)
2009-01-16 翻译 HID Human Input Device 人工输入设备 Wii Fit Balance Board 平衡板 IR ...
- lintcode:线段树的构造
线段树的构造 线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间.start和end都是整数,并按照如下的方式赋值: 根节点的 start 和 end 由 ...
- 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期
在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务: 老板把每个月例会的时间定在了每个月的第一个星期一,他让我 ...
- React-非dom属性-key
一.react性能 1.内容类似的尽量归到同一人组件,这样react不用每次都重新渲染 2.类似列表的内容,要加上key,可减少渲染次数 3.react渲染过程 二.代码 <!DOCTYPE h ...
- php ++a和a++
<?php$a=$b=5;$a+$b=$a++-++$b;echo $b;?> 输出-1
- IE8 浏览器自动保存文档副本,添加缓存
若响应(response)HTTP头信息中没有关于缓存的头信息,则在IE8中第二次请求网页时,从缓存中拿取文件,而不是重新向服务器请求.而在Firefox或chrome则是重新向服务器请求. 解决方法 ...