Java面向对象--接口

  1. 接口的简介
    接口是Java语言所提供的另一种重要功能,它的结构与抽象类非常相似。接口本身也具有数据成员,抽象方法,默认方法和静态方法,凡是它与抽象类有一些不同。一是接口的数据成员都是静态的且必须初始化,即数据成员必须是静态常量。二是接口中除了声明抽象方法外,还可以定义静态方法和默认方法。

  2. 接口的定义
    接口定义的语法格式如下:

    [public] interface 接口名称 [extends 父接口名列表]{
    	[public] [static] [final] 数据类型 常量名 = 常量;//定义常量
    	[public] [abstract] 返回值的数据类型 方法名(参数列表);//定义抽象方法
    	[public] static 返回值的数据类型 方法名(参数列表){//定义静态方法
    		//方法体
    	}
    	[public] default 返回值的数据类型 方法名(参数列表){//定义默认方法
    		//方法体
    	}
    }
    

    接口注意:

    • 接口方法不能够是private的。
    • 接口数据成员必须是静态的,且一定要赋初始值,且此值不能再被修改。
    • 接口不是一个类,不能够使用new运算符去实例一个接口。
    • 接口与接口之间可以是继承关系。
    • Java中不支持多继承,也就是不能存在一个子类继承多个父类的情况,因为这样子会造成子类中某些方法或者变量的不确定性,为了弥补采用的单继承所带来的的不足,Java出现了接口的概念,而接口就可以很好的避免这个问题,Java中通过实现多接口的方法去解决类之间无法多继承的问题。
  3. 接口的实现与引用
    接口实现语法格式:

    class 类名称 implements 接口名表{
    	//...
    }
    

    一个类实现一个接口的时候,需注意 :

    • 如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须要实现指定接口的所有抽象方法。
    • 与类一样,每个接口都会被编译成独立的扩展名为.class的字节码文件。

    接口是可以作为一种引用类型来进行使用。
    例如:

    interface shape{
        static final double PI = 3.14;
        abstract double getArea();//声明抽象方法
    }
    
    class circle implements shape{
        double r;
        public circle(double r){
            this.r = r;
        }
    
        @Override
        public double getArea() {//实现接口中getArea方法
            return PI*r*r;
        }
    }
    
  4. 接口的继承
    接口也是拥有继承性的,定义一个接口时可以通过extends关键字声明该接口某个已经存在的接口的子接口,而这个子接口将会继承父接口的常量,接口方法和默认方法,但是不能继承父接口中的静态方法,也不能被实现类所继承。

    interface father1{//父接口
        static final double PI = 3.14;
        abstract double getArea();
    }
    
    interface father2{//父接口
        abstract double getLength();
    }
    
    interface son extends father1, father2{//子接口
        abstract double demo();
    }
    
发布了36 篇原创文章 · 获赞 47 · 访问量 3979

猜你喜欢

转载自blog.csdn.net/qq_43800455/article/details/103552396
今日推荐