java中接口,接口的特点,接口的成员特点,接口和类之间的关系

1.接口
概论:接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。java中的接口更多的体现在对行为的抽象。

2.接口的特点

package java_learn;
/*
    定义一个接口JumpPing:
    接口的特点:
    1)接口用interface修饰,即public interface 接口名{};
    2)类实现接口用implements表示,即:public class 类名 implements 接口名{};
    3)接口不能实例化,接口如何实现实例化呢?参照多态的形式,通过实现类对象实例化,这叫接口多态。
    多态的形式:具体类多态,抽象类多态,接口多态;
    多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象。
    4)接口的实现类:要么重写接口中的所有抽象方法;要么是抽象类。
 */

public interface JumpPing {//1)接口用interface修饰,即public interface 接口名{};
    //定义一个抽象方法
    public abstract void Jump();

}
package java_learn;

public class Cat implements JumpPing{//意思是类Cat实现接口JumpPing
    //重写jump方法
    //jump();快速重写方法快捷键
    @Override
    public void Jump(){
        System.out.println("猫可以跳高!");
    }

}
package java_learn;

public abstract class Dog implements JumpPing{//抽象类Dog在实现接口的时候可以不用重写接口中的方法,但是抽象类Dog的
    // 子类在继承Dog的时候还是得重写接口中的抽象方法。


}
package java_learn;
/*
    测试类!
 */

public class JumpPingDemo {
    public static void main(String[] args) {
        //JumpPing j=new JumpPing();//这样会报错!接口JumpPing是抽象的,而且主要对行为抽象,不能被实例化
        JumpPing j=new Cat();//可以通过接口JumpPing的实现类Cat来实例化。
        j.Jump();

    }
}

3.接口的成员特点

package java_learn;
/*
    接口的成员特点:
    1)成员变量只能是常量,默认修饰符:public static final
    2)构造方法:接口没有构造方法,这是因为接口主要对行为进行抽象,没有具体存在;
    一个类如果没有父类,默认继承自Object类
    3)成员方法:只能是抽象方法,默认修饰符:public abstract。
 */

public interface Inter {
    public int num=10;
    public final int num2=20;
    public static final int num3=100;//接口中的成员变量是常量,并且还被静态修饰。直接写int num3=100;也可以的,会默认的。
   // public void Inter(){}//会报错,接口中没有抽象方法。接口中的实现类InterImpl中可以写构造方法,
    // 那如何解释实现类默认super()访问父类呢?:这是因为java中的所有构造方法默认访问Object类中的无参构造Object()。
    //public void show(){}报错,接口中不能有非抽象方法
    public abstract void method();//可以,接口中只能有抽象方法,也会默认为抽象方法
    void show();//不报错,就是因为默认抽象方法
}
package java_learn;
//punlic class InterImpl extends Object implements Inter{}.这个是默认的,是对的,下面的是简写而已。
public class InterImpl implements Inter{//一般在接口名后面加Impl作为接口的实现类。


    @Override
    public void method() {
        System.out.println("实现类必须重写接口中的抽象方法,比如method方法");//实现类必须重写接口中的抽象方法method

    }

    @Override
    public void show() {

    }
}
package java_learn;
/*
    测试类
 */

public class InterfaceDemo {
    public static void main(String[] args) {
        Inter i =new InterImpl();//使用实现类InterImpl来实例化接口
       // i.num=23;//报错,这是因为接口中的成员变量默认被final修饰,即接口中的成员变量默认我常量。
        System.out.println(i.num);
        //i.num2=40;//报错,这是因为num2被final修饰,成为了常量。
        System.out.println(i.num2);
        System.out.println(Inter.num);//事实上,可以通过接口直接访问接口中的成员变量

    }

}

4.接口和类之间的关系
1)类和类之间的关系:继承关系,而且只能单继承。即在敲代码时,子类1 extends 父类1,父类2…就会报错。

2)类和接口直接的关系:实现关系,类可以继承于某个父类再继承多个接口。如public class Zi extends Fu implements Inter1,Inter2…不报错。

3)接口和接口的关系:继承关系,可以单继承,也可以多继承。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值