• JAVA笔记12-接口interface


    1、概念:接口是抽象方法和常量值得定义的集合。本质上,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现

      接口定义举例:

    2、接口特性:

    (1)接口可以多重实现;(接口可以继承接口,类可以实现接口,类可以继承类)

    (2)接口中声明的属性(成员变量)默认是public static final的,也只能是public static final的;

      这是为了修正C++中多继承容易出现问题(重复的成员变量)。

    (3)接口中只能定义抽象方法,而且这些方法默认是public的,也只能是public的;

      接口中的方法不用加abstruct,默认就是抽象方法,而且只能是抽象方法。

    (4)接口可以继承其他的接口,并添加新的属性和抽象方法。

    3、 (1)多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口;

      (2)与继承关系类似,接口与实现类之间存在多态性

    4、定义Java类的语法格式:

    5、补充:实现Comparable接口(该接口只有一个compareTo方法),重写compareTo方法。写一个排序方法,能够比较所有类型的对象。

    6、接口举例

    例1:

    public class TestInterface{
        public static void main(String args[]){
            Singer s1=new Student("le");//此处并非实例化接口,接口与抽象类一样是不可以实例化的
            s1.sing();//student is singing
            s1.sleep();//student is sleeping
            Singer s2=new Teacher("steven");
            s2.sing();//teacher is singing
            s2.sleep();//teacher is sleeping
            Painter p1=(Painter) s2;
            p1.paint();//teacher is painting
            p1.eat();//teacher is eating
        }
    }
    interface Singer{
        public void sing();
        public void sleep();
    }
    
    interface Painter{
        public void paint();
        public void eat();
    }
    
    class Student implements Singer{
        private String name;
        Student(String name){
            this.name=name;
        }
        public String getName(){
            return name;
        }
        public void study(){
            System.out.println("studying");
        }
        public void sing(){
            System.out.println("student is singing");
        }
        public void sleep(){
            System.out.println("student is sleeping");
        }
    }
    class Teacher implements Singer,Painter{
        private String name;
        Teacher(String name){
            this.name=name;
        }
        public String getName(){
            return name;
        }
        public void teach(){
            System.out.println("teaching");
        }
        public void sing(){
            System.out.println("teacher is singing");
        }
        public void sleep(){
            System.out.println("teacher is sleeping");
        }
        public void paint(){
            System.out.println("teacher is painting");
        }
        public void eat(){
            System.out.println("teacher is eating");
        }
    }

     内存分析:对象中的“指向方法的指针”可以动态地根据指向该对象的引用类型调整所指向的方法

     例2:

     

  • 相关阅读:
    IntelliJ IDEA常用统一设置2-Inspections检查设置(Linux/Mac/Windows)
    IntelliJ IDEA版本:Ultimate、Community、EAP版本的区别
    IntelliJ IDEA重构技巧收集
    Java泛型中的类型擦除机制简单理解
    阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
    Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)
    Java使用logback记录日志时分级别保存文件
    Java中List,Set和Map详解及其区别和使用场景(转)
    Java中泛型的Class<Object>与Class<?>的区别(转)
    Java中泛型T和Class<T>以及Class<?>的理解(转)
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3657332.html
Copyright © 2020-2023  润新知