Java基础——接口

Java中只支持单继承,一个子类只有一个直接的父类,当一个类型中需要兼容多种类型特征 ,或者多个不同类型具有相同特征时,我们就需要用到接口。

接口的创建

创建接口
接口命名通常以大写I打头,后续单词第一位大写,如ICat,IDog。

public interface ICat {
}

接口的访问修饰符通常为public。
类之间只能单继承,但接口之间可以实现同时多个继承,父接口与父接口之间用逗号隔开,例如:

public interface ICat extends ICat1,ICat2 {
}

实现类承载接口

实现类承载接口的关键词为implements,并且可以同时承载多个接口。当一个类同时需要继承父类和承载接口时,父类在前,接口在后。如下代码:

public class Pet extends Animal implements ICat,IDog {
}

当多个接口中同时有一个同名方法时,即使是其中一个接口指向实现类去实例化,在调用方法时依旧会报错,这个时候就需要在是实现类中重写这个方法。

当继承的父类和承载的接口中有同名的方法时,子类调用的是父类的方法。但是当父类和接口中有重名的常量时,子类是无法正常运行的,需要子类重新定义

接口中属性的创建:

//    public static final int month=2;	//完整写法
      int month=2;						//简写

在接口当中定义常量时,修饰符public、static和final都是可以省略的。
接口中的属性创建时必须要初始化。
当借口和实现类中有重名的常量时,调用的是接口中的常量信息。

接口中方法的创建:

接口中的方法大致可以分为三类:抽象方法,默认方法和静态方法。
在接口中创建三种方法:

	 //抽象方法
//  public abstract void sleep();   //完整写法
    void sleep();                   //简写

	//默认方法
	default void paw(){
        System.out.println("四个爪子");
    }
	default void eat(){
        System.out.println("猫吃鱼");
    }

    //静态方法
    static void jump(){
        System.out.println("猫跳得很高");
    }

实现类中测试三种代码:

public class Pet implements ICat {
        @Override
        public void sleep () {						//重写抽象方法(必须)
            System.out.println("猫爱睡觉");
        }
        @Override
        public void eat () {						//重写默认方法(不必须)
            ICat.super.paw();						//调用接口中的默认方法paw
            ICat.super.eat();						//调用接口中的默认方法eat
            ICat.jump();							//调用接口中的静态方法jump
        }
    public static void main(String[] args) {
    	Pet one =new Pet();
    	//抽象方法的调用
		one.sleep();
        //默认方法的调用
        one.eat();
         //静态方法的调用
        ICat.jump();
     }
    }

抽象方法:
抽象方法没有方法体,并且其修饰符public和abstract都可以省略。当一个非抽象类实现接口时,需要实现接口中所有的抽象方法,而当抽象类实现接口时,可以不用实现所有的抽象方法,未实现的方法由继承这个抽象类的子类去实现。

默认方法:
默认方法既可以在实现类中重写,也可以不重写。
若想调用接口中的默认方法,则需要通过接口名.super.默认方法名的方式。例如,当接口中存在paw和eat两种默认方法,重写方法eat时,既可以调用接口中的默认方法eat,也可以调用paw,但是不能直接在主方法中调用,只能通过实例化对象去调用方法的方式使用。

静态方法:
静态方法带方法体,并且不能在实现类中重写。通过接口名.静态方法名的方式调用。既可以在方法中调用,也可以在主方法中直接调用,不能通过实例化对象去调用。

方法名修饰符有无方法体是否需要重写
抽象方法public abstract非抽象方法中必须重写
默认方法default可以重写,可以不重写
静态方法static不能重写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值