java 远程怎么改bug_Java--接口

一、接口语法

接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似

用 interface 关键字来定义接口,接口没有构造方法,不能创建对象。(接口的名称一般以able结尾)

接口只能定义 公开静态常量和公开抽象方法

类与类的关系是继承,类与接口的关系是实现(用关键字implements)。

packagecom.monv.interface_1;/*** 接口:只包括 公开的静态常量和公开的抽象方法

*@authorAdministrator

**/

public interfaceMyInterface {//public static final String NAME="接口";//公开的静态常量//一般情况下 可以不写public static final 直接定义常量 就会默认为 公开的静态常量

String NAME="接口";//public abstract void method();//公开的抽象方法//一般情况下 可以不写public abstract 直接定义方法 默认的为 公开的抽象方法

voidmethod();

}-----------------------接口与类的关系-------------------------------

packagecom.monv.interface_1;/*** 实现类(类与类的关系是继承,类与接口的关系是实现)

*@authorAdministrator

**/

public class Impl implementsMyInterface{//覆盖接口中的抽象方法

@Overridepublic voidmethod() {

System.out.println("接口实现。。");

}

}----------------------------------------------------------------------

packagecom.monv.interface_1;public classTestInterface {public static voidmain(String[] args) {//new MyInterface(); 接口不能创建对象 会报错//MyInterface myInterface1;//但是可以用接口定义变量

MyInterface myInterface2 = new Impl();//用接口创建变量 实例化成Impl对象 (多态)MyInterface相当于抽象类 Impl 相当于子类

myInterface2.method();

}

}------------------------------------------------------------------------

二、接口和抽象类的异同

相同:

可编译成字节码文件

不能创建对象(接口没有构造方法无法创建对象,抽象类不能创建对象)

可以作为引用类型(接口和抽象类都可以创建变量)

具备Object类中所定义的方法

不同:

接口中所有属性都是公开静态常量,隐式使用 public static final 修饰。

接口中所有方法都是公开抽象方法,隐式使用 public abstract 修饰。

接口中没有构造方法 动态代码块 静态代码块

三、什么是接口

微观概念:接口是一种能力和约定

接口的定义:代表了某种能力。

方法的定义:能力的具体要求。

经验:Java为单继承,当父类的方法种类无法满足子类的需求时,可实现接口扩充子类能力。

接口支持多实现,可为类扩充多种能力。

实例:定义了一个person类,具有吃和睡的方法。当人类拥有了超能力(飞、喷火)后,person类就无法实现这个能力了,这个时候需要定义飞和喷火的接口,让person类来实现,然后人类对象就可以实现飞和喷火的超能力。

注意:在用接口创建变量的时候,变量只能调用接口中的方法和Object中的方法。其他的方法是不能被调用的

-----------------定义Person类----------------------

packagecom.monv.interface_2;/*** person 拥有飞的能力 实现Flyable接口 类中必须重写接口中的方法

*@authorAdministrator

**/

public class Person implementsFlyable,Fireable {

String name;intage;publicPerson() {//TODO Auto-generated constructor stub

}public Person(String name, intage) {super();this.name =name;this.age =age;

}//吃的方法

public voideat(){

System.out.println(name+"正在吃东西...");

}//睡的方法

public voidsleep(){

System.out.println(name+"正在睡觉...");

}

@Overridepublic voidfly() {

System.out.println(name+"拥有了飞的超能力...");

}

@Overridepublic voidfire() {

System.out.println(name+"拥有了喷火的超能力...");

}

}----------------------------飞接口-----------------------------------

packagecom.monv.interface_2;/*** 接口 飞的能力

*@authorAdministrator

**/

public interfaceFlyable {voidfly();

}----------------------------------喷火接口-----------------------------

packagecom.monv.interface_2;/*** 喷火超能力

*@authorAdministrator

**/

public interfaceFireable {voidfire();

}----------------------------------测试---------------------------------

packagecom.monv.interface_2;public classTestPerson {public static voidmain(String[] args) {

Person xm= new Person("小明",22);

xm.fly();

xm.fire();

System.out.println("=====用多态=======");//在用接口创建变量的时候 变量只能调用接口中的方法和Object中的方法 不能调用person中eat和sleep方法

Flyable xh = new Person("小红",20);

xh.fly();

Fireable xl= new Person("小李",21);

xl.fire();

}

}------------------------------------------------------------------------小明拥有了飞的超能力...

小明拥有了喷火的超能力...=====用多态=======小红拥有了飞的超能力...

小李拥有了喷火的超能力...

四、接口的规范

任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类

实现接口中的抽象方法时,访问修饰符必须是public。

五、接口引用

同父类一样,接口也可声明为引用(可以用接口创建变量,但是不能实例化对象),并指向实现类对象。

注意:

仅可调用接口中所声明的方法,不可调用实现类中独有的方法。

可强转回实现类本身类型,进行独有方法调用

[特殊:可以通过接口调用Object中的公开方法]

六、接口的多态

4701cc8fbbaa821b3b0b1e7680fc694b.png

实例:动物类Animal类 有eat和sleep的方法;有两个接口Runable接口和Swimable接口,实现跑和游泳;狗狗类Dog 继承动物类,有自己独有的方法 shout,还有两个接口的实现。

--------------------父类-----------------------------

packagecom.monv.interface_3;public abstract classAnimal {public voideat(){

System.out.println("正在吃东西...");

}public voidsleep(){

System.out.println("正在睡觉...");

}

}-------------------接口1 跑---------------------------

packagecom.monv.interface_3;public interfaceRunable {voidrun();

}-------------------接口2 游泳-------------------------------

packagecom.monv.interface_3;public interfaceSwimable {voidswim();

}--------------------子类 狗狗类----------------------------

packagecom.monv.interface_3;/*** Dog类来实现跑和游的接口 implements(接口的实现,多个接口用逗号隔开) 要在extends(继承)之后

*@authorAdministrator

**/

public class Dog extends Animal implementsRunable,Swimable{//子类独有的方法

public voidshout(){

System.out.println("狗狗在叫....");

}

@Overridepublic voidswim() {

System.out.println("狗狗在游泳...");

}

@Overridepublic voidrun() {

System.out.println("狗狗在奔跑...");

}

}--------------------------测试----------------------------------------

packagecom.monv.interface_3;public classTestDog {public static voidmain(String[] args) {

Dog kejiDog= newDog();

Animal a=kejiDog;

Runable r=kejiDog;

Swimable s=kejiDog;//kejiDog狗狗对象 可以调用Dog类中的方法 包括实现的方法

kejiDog.eat();

kejiDog.sleep();

kejiDog.shout();

kejiDog.swim();

kejiDog.run();//a 父类对象 只能调用父类中的方法

a.eat();

a.sleep();//r 用接口定义的变量 只能调用 Runable中的方法

r.run();//s 用接口定义的变量 只能调用Swimable中的方法

s.swim();

}

}----------------------------------------------------------------------

七、常见关系

类与类: 1.单继承  2.extends 父类名称

类与接口:1.多实现  2.implements 接口名称1,接口名称2,接口名称n

接口与接口:1.多继承  2.extends 父接口1,父接口2,父接口n

八、常量接口和标记接口

常量接口:将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码的可读性。

标记接口:接口中没有包含任何成员,仅仅用作标记。(如:Serializable(可以序列化的),Cloneable(可以克隆的))

九、什么是接口

宏观概念:接口是一种标准。

c911e4b9315b64368ae90e85aaf343f6.png

示例:电脑连接USB设备

---------------------USB接口定义------------------------

packagecom.monv.interface_5;/*** Usb接口

*@authorAdministrator

**/

public interfaceUsb {voidservice();

}----------------------接口的实现-----------------------------

packagecom.monv.interface_5;/*** U盘-接口的实现者

*@authorAdministrator

**/

public class UPan implementsUsb{

@Overridepublic voidservice() {

System.out.println("U盘连接电脑成功!");

}

}packagecom.monv.interface_5;/*** 风扇-接口的实现者

*@authorAdministrator

**/

public class Feng implementsUsb {

@Overridepublic voidservice() {

System.out.println("风扇连接电脑成功!");

}

}packagecom.monv.interface_5;/*** 鼠标-接口的实现者

*@authorAdministrator

**/

public class Mouse implementsUsb{

@Overridepublic voidservice() {

System.out.println("鼠标连接电脑成功!");

}

}------------------接口的使用者------------------------------

packagecom.monv.interface_5;/*** 电脑-接口的使用者(电脑上3个USB接口)

*@authorAdministrator

**/

public classComputer {

Usb usb1;

Usb usb2;

Usb usb3;public voidrun(){

System.out.println("电脑开始工作。。。");if (usb1 != null){

usb1.service();

}if (usb2 != null){

usb2.service();

}if (usb3 != null){

usb3.service();

}

}

}------------------------测试---------------------------------

packagecom.monv.interface_5;public classTest {public static voidmain(String[] args) {//定义电脑

Computer huawei = newComputer();//3个USB设备

Usb mouse = newMouse();

Usb feng= newFeng();

Usb upan= newUPan();//把USB设备连接到电脑 Computer类中usb1是用接口定义的 没有用具体的类型来定义 所以可以把任何一个usb设备赋值给usb1

huawei.usb1 =upan;

huawei.usb2=mouse;

huawei.usb3=feng;

huawei.run();

}

}---------------------------------------------------------电脑开始工作。。。

U盘连接电脑成功!

鼠标连接电脑成功!

风扇连接电脑成功!--------------------------------------------------------

十、回调原理

1f1582feb3e820f951f1b63b9268548a.png

十一、接口好处

程序的耦合度降低

更自然的使用多态

设计与实现完全分离

更容易搭建程序框架

更容易更换具体实现

十二、总结

什么是接口

微观:接口是一种能力和约定

宏观:接口是一种标准

接口与类的异同

接口没有构造方法,不能创建对象,仅可定义公开静态常量和公开抽象方法

接口的应用

Java为单继承,当父类的方法无法满足子类需求时,可实现接口扩充子类能力。

接口的规范

任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类

实现接口中的抽象方法时,访问修饰符必须是public

什么是常量接口、标记接口

常量接口:将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理

标记接口:接口中没有包含任何成员,仅仅用作标记。

什么是接口回调

先有接口的使用者,后有接口的实现者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值