首页 Java java教程 面向对象(接口 ,多态)

面向对象(接口 ,多态)

Jun 26, 2017 am 11:09 AM
多态 对象 接口 面向

接口

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


}
子类:public class interImp implements Itner{

}

接口的使用
1.接口不能创建对象
2.定义实现类来实现接口
实现的关键字  implements
3.重写抽象方法  
4.创建实现类对象  调用方法


接口的特点
1.不需要被abstract 修饰
2.类实现接口,可以单实现 还可以多实现
3.接口可以继承接口,可以单继承也可以多继承
4.接口与父类的功能可以重复,均代表要具备某种功能

接口的成员特点
成员变量  静态常量  
固定修饰符  public static final
无论写不写  挑着写 都是这个修饰符  不变

成员方法
固定修饰符   public abstract
无论写不写  挑着写 都是这个修饰符  不变

抽象类和接口的区别
1.成员的区别
抽象类:
成员变量: 可以是变量,也可以是常量
构造方法:有构造方法,用于子类实例化使用
成员方法:可以是抽象的,也可以是非抽象的
接口:
成员变量:只能是常量
默认修饰符:public static final

成员方法:只能是抽象的
默认修饰符:public abstract

推荐:默认修饰符请永远自己手动给出
2.类和接口的关系区别
类与类:
继承关系,只能单继承,可以多层继承

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

接口与接口:
继承关系,可以单继承,也可以多继承
3.体现的理念不同

抽象类里面定义的都是一个继承体系中的共性内容
接口是功能的集合是一个体系额外的功能,是暴露出来的规则


一切使用父类/接口引用的地方 都可以传入其子类/实现类对象

 

多态
同一个对象,在不同时刻体现出来的不同的状态
举例:水(水,冰,水蒸气)
猫(猫,动物)
前提:
A: 有继承或者实现关系
B: 有方法的重写
C: 有父类的引用指向子类对象
多态中的成员使用特点
Fu fz=new Zi();
多态时 所有表现形式都是父类的表现形式
只有调用方法时,运行的是子类重写的方法
1.成员变量
编译看左边  运行看左边
2.成员方法
编译看左边  运行看右边

 1         class Fu{ 2             int num=4; 3             void show(){ 4                 system.out.println("showFu") 5             } 6  7         } 8         class Zi extends Fu{ 9 10             int num=5;11             void show(){12                 system.out.println("showZi");13             }14         }15         class T{16             public static void main(String args[]){17                 Fu f=new Zi();18                 system.out.println(f.num);19                 f.show();20             }21         }
登录后复制

 

多态中的转型
1.向上转型
把子类对象赋值给父类(接口)的引用 自动类型提升
int a=0; double b=a;
Fu fz=new Zi();
2.向下转型
把父类(接口)的引用强制转换成子类对象
double b=10.0;
int a=(int)b;

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

多态的好处及弊端
1.好处
提高了程序可维护性和可扩展性
2.弊端
不能适用子类特用内容
要想使用,要么向下转型,要么重新创建子类对象
多态的三种形式
1.具体的类多态 父类 变量名 =new 子类()
2.抽象类多态  父抽象类 变量名=new 子类()
3.接口多态   接口  变量名 =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){
向下转型
调用猫特有的方法
  }
}

以上是面向对象(接口 ,多态)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

电脑主板内部接口都有什么 推荐电脑主板内部接口介绍 电脑主板内部接口都有什么 推荐电脑主板内部接口介绍 Mar 12, 2024 pm 04:34 PM

我们在电脑组装的过程中,安装过程虽然简单,不过往往都是在接线上遇到问题,经常有装机用户误将CPU散热器的供电线插到了SYS_FAN上,虽然风扇可以转动,不过在开机可能会有F1报错“CPUFanError”,同时也导致了CPU散热器无法智能调速。下面装机之家分享一下电脑主板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT接口知识科普。电脑主板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT接口知识科普1、CPU_FANCPU_FAN是CPU散热器专用接口,12V工作

Go语言中常见的编程范式和设计模式 Go语言中常见的编程范式和设计模式 Mar 04, 2024 pm 06:06 PM

Go语言作为一门现代化的、高效的编程语言,拥有丰富的编程范式和设计模式可以帮助开发者编写高质量、可维护的代码。本文将介绍Go语言中常见的编程范式和设计模式,并提供具体的代码示例。1.面向对象编程在Go语言中,可以使用结构体和方法实现面向对象编程。通过定义结构体和给结构体绑定方法,可以实现数据封装和行为绑定在一起的面向对象特性。packagemaini

C++虚函数表与多态实现,如何避免内存浪费 C++虚函数表与多态实现,如何避免内存浪费 May 31, 2024 pm 07:03 PM

虚基类可优化虚函数表内存开销,通过允许从多个基类继承而无需创建额外虚函数表。在优化后代码中,形状基类不再有虚函数表,圆和矩形类共享同一个虚函数表,从而减少了内存消耗。

如何将 MySQL 查询结果数组转换为对象? 如何将 MySQL 查询结果数组转换为对象? Apr 29, 2024 pm 01:09 PM

将MySQL查询结果数组转换为对象的方法如下:创建一个空对象数组。循环结果数组并为每一行创建一个新的对象。使用foreach循环将每一行的键值对赋给新对象的相应属性。将新对象添加到对象数组中。关闭数据库连接。

PHP接口简介及其定义方式 PHP接口简介及其定义方式 Mar 23, 2024 am 09:00 AM

PHP接口简介及其定义方式PHP是一种广泛应用于Web开发的开源脚本语言,具有灵活、简单、强大等特点。在PHP中,接口(interface)是一种定义多个类之间公共方法的工具,实现了多态性,让代码更加灵活和可重用。本文将介绍PHP接口的概念及其定义方式,同时提供具体的代码示例展示其用法。1.PHP接口概念接口在面向对象编程中扮演着重要的角色,定义了类应

NotImplementedError()的处理方案 NotImplementedError()的处理方案 Mar 01, 2024 pm 03:10 PM

报错的原因在python中,Tornado中抛出NotImplementedError()的原因可能是因为未实现某个抽象方法或接口。这些方法或接口在父类中声明,但在子类中未实现。子类需要实现这些方法或接口才能正常工作。如何解决解决这个问题的方法是在子类中实现父类声明的抽象方法或接口。如果您正在使用一个类来继承另一个类,并且您看到了这个错误,则应该在子类中实现父类中所有声明的抽象方法。如果您正在使用一个接口,并且您看到了这个错误,则应该在实现该接口的类中实现该接口中所有声明的方法。如果您不确定哪些

数组和对象在 PHP 中的区别是什么? 数组和对象在 PHP 中的区别是什么? Apr 29, 2024 pm 02:39 PM

PHP中,数组是有序序列,以索引访问元素;对象是具有属性和方法的实体,通过new关键字创建。数组访问通过索引,对象访问通过属性/方法。数组值传递,对象引用传递。

PHP中的Request对象是什么? PHP中的Request对象是什么? Feb 27, 2024 pm 09:06 PM

PHP中的Request对象是用于处理客户端发送到服务器的HTTP请求的对象。通过Request对象,我们可以获取客户端的请求信息,比如请求方法、请求头信息、请求参数等,从而实现对请求的处理和响应。在PHP中,可以使用$_REQUEST、$_GET、$_POST等全局变量来获取请求的信息,但是这些变量并不是对象,而是数组。为了更加灵活和方便地处理请求信息,可

See all articles