黑马程序员技术交流社区

标题: 面向对象第四天_接口 [打印本页]

作者: xiaobokk    时间: 2016-8-3 22:10
标题: 面向对象第四天_接口
接口:
        接口概述:
                -->狭义:java中的interface
                -->广义:对外提供规则的都是接口
       
        接口的特点:
                A:接口用关键字interface表示
                        -->interface 接口名 {}

                B:类实现接口用implements表示
                        -->class 类名 implements 接口名{}

                C:接口不能实例化
                        如何实例化?
                                -->按照多态的方式来实例化
                       
                D:接口的子类
                        1.可以是抽象类,但是意义不大
                        2.可以是具体类,要重写接口中的所有抽象方法
                                -->如果继承的类中已经重写了一部分方法的话,那么只要重写剩余抽象方法就行了
       
        接口的成员特点:
                成员变量:
                        只能是常量,并且是静态的公开的.
                         --> public static final  (建议自己给出)
               
                构造方法:
                        接口中没有构造方法
               
                成员方法:
                        默认修饰符:public static  (建议自己给出)
       
        类与类,类与接口,接口与接口的关系
                类与类:
                        继承关系-->只能单继承,支持多层继承
       
                类与接口:
                        实现关系-->可以单实现,也可以多实现
                                -->可以理解为一个人可以学习多个技能
               
                接口与接口:
                        继承关系,可以单继承,也可以多继承
       
        抽象类与接口的区别:
                抽象类:
                        成员变量:可以变量,也可以是常量
                        构造方法:有
                        成员变量:可以抽象,也可以非抽象
               
                接口:
                        成员变量:只可以常量
                        成员方法:只可以抽象
               
                设计理念的不同:
                        抽象类体现的是一种"is a" 的关系
                        接口 被实现体现的是一种"like a"的关系

        附上一段接口的示例代码

[Java] 纯文本查看 复制代码
class Test {
        public static void main(String[] args){
                SmokingStudent s = new SmokingStudent("刘",21);
                s.study();
                s.smoke();
        }
}

interface Smoking {
        public abstract void smoke();
}

abstract class Person {
        private String name;
        private int age;

        public Person(){}

        public Person(String name,int age){
                this.name = name;
                this.age = age;
        }

        public void setName(String name){
                this.name = name;
        }

        public String getName(){
                return name;
        }

        public void setAge(int age){
                this.age = age;
        }

        public int getAge(){
                return age;
        }
}


abstract class Student extends Person {
        public Student(){}

        public Student(String name,int age){
                super(name,age);
        }

        public abstract void study();
       
}

class SmokingStudent extends Student implements Smoking{
        public SmokingStudent(){}

        public SmokingStudent(String name,int age){
                super(name,age);
        }
       
        public void study(){
                System.out.println("学生学习");
        }

        public void smoke(){
                System.out.println("学生抽烟");
        }

}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2