Java开发——11.接口

Java开发——11.接口,第1张

接口(interface):

接口是一种公共的规范标准,只要符合规范标准,大家都可以通用。接口和抽象类相似,但是接口比抽象类的规定更加规范和严格。Java中的接口更多的体现在对行为的抽象!
抽象类的描述在 面向对象的特点10 中已经完成讲解,有问题的可以参考,以下链接!

抽象类:

抽象方法所在的类一定是抽象类,但是抽象类中可以有非抽象方法。

接口:

接口中的方法均为抽象方法。

接口定义格式:

接口用关键字interface修饰

public interface 接口名 {}

接口的使用:

接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示

public class 类名 implements 接口名 {}

注意: 接口的实现类必须重写接口中的所有的抽象方法。

接口成员的特点:

1.成员变量
只能是常量,默认修饰符:public static final,final修饰所以接口中定义的变量都是常量
2.成员方法
只能是抽象方法,默认修饰符:public abstract
3.构造方法
没有构造方法,因为接口主要是扩展功能的,而没有具体存在,接口中只有抽象方法。

案例展示:
public interface Inter {//接口中定义的变量只能是常量
    //默认修饰符:public static final,可以省略修饰符(public static final)
    public int num1 = 10;
    public final  int num2 = 20;
    public static final int num3 = 30;
    int num4 = 40;//默认是被 public static final 修饰//接口没有构造方法
    // public Inter() {}//接口中不能有方法主体
    // public void show() {}//默认修饰符:public abstract 
    public abstract void method1();public void method2();void show();}

实现类:

/**
 *   子类是具体类,要实现接口中所有的抽象方法
 */
public class InterImpl extends Object implements  Inter {
    public InterImpl(){
        super();//super实现的是object这个超级父类
    }
 
    @Override
    public void method1() {
        System.out.println("实现类中的method1");}@Override
    public void method2() {
        System.out.println("实现类中的method2");}@Override
    public void show() {
        System.out.println("实现类中的show");
    }
}

测试类:

public class Test {    
public static void main(String[] args) {        
//接口不能实例化        
// Inter i = new Inter();        
//通过多态的方法实        
Inter i = new InterImpl();        
//访问成员变量        
System.out.println(i.num1);        
//接口的常量是不能修改的        
// i.num1 = 100;        
i.method1();        
i.method2();        
i.show();    
}
}
接口和抽象类的区别: A:成员区别
抽象类:
	成员变量:变量 或者 常量;
	构造方法:有;
	抽象类不能实例化;
	成员方法:可以有抽象方法,也可以有非抽象方法。
接口:
	成员变量:只可以静态常量  可以省略 static final;
	构造方法:无;
	接口不能实例化;
	成员方法:只有抽象方法。      可以省略abstract!
B:关系区别
类与类
    继承,单继承, 多层继承(爷->父->子->孙)
类与接口
	实现,单实现,多实现
接口与接口
    继承,单继承,多继承都可以
C:设计理念区别
抽象类【共性功能】。
接口【扩展功能】。
多实现的格式:(多继承也是一样的写法)
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {    
    // 重写接口中抽象方法【必须】
    // 重写接口中默认方法【不重名时可选】
} 

​总结:

接口中只有常量和抽象方法;
接口是没有静态代码块和构造方法的;
一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
单继承多实现:

public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {
   // 覆盖重写所有抽象方法
}

如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。​


欢迎关注微信公众号:小红的成长日记,一起学Java!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/729391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存