2019-05-28 java学习日记

接口(interface)

接口的概述

从狭义的角度讲就是指java中的interface
从广义的角度讲就是对外提供规则的都是接口

接口的特点

1,接口用关键字interface表示:
  interface 接口名 {}

2,类实现接口用implements表示:
  class 类名 implements 接口名 {}

3,接口不能被实例化,因为调用抽象方法没有意义,
  可以按照多态的方式实例化

接口的子类

1,可以是抽象类。但是意义不大
2,可以是具体类。要重写接口中的所有抽象方法

注:接口中的方法都是抽象的

接口成员特点:

成员变量:

1,成员变量只能是常量,并且是静态且公共的
2,默认修饰符:public static final,三个关键字可以互相交换位置
3,构造方法:接口没有构造方法

成员方法:

1,只能是抽象方法
2,默认修饰符:public abstract

注:一个类不写继承任何类,默认继承Object类

继承格式:

class Demo /*extends Object*/ implements Inter { }

类与类、类与接口、接口与接口的关系:

类与类:

继承关系,只能单继承,可以多层继承

类与接口:

1,实现关系,可以单实现,也可以多实现
2,并且还可以在继承一个类的同时实现多个接口

如:

class Demo extends Object implements InterA,InterB {}

注意:

class Demo extends Object implements InterA,implement InterB {}

这样是非法的,不被允许的

接口与接口:

继承关系,可以单继承,也可以多继承

抽象类和接口的区别

成员区别

抽象类:

成员变量:可以变了,也可以常量
构造方法:有
成员方法:可以抽象,也可以非抽象

接口:

成员变量:只可以常量

成员方法:只可以抽象

关系区别

类与类

继承,单继承

类与接口

实现,单实现,多实现

接口与接口

继承,单继承,多继承

设计理念区别

抽象类:被继承体现的是:“is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口:被实现体现的是:“like a”的关系。接口中定义的是该继承体系的扩展功能。

 1 class Test_Animal {
 2     public static void main(String[] args){
 3         Cat c = new Cat("小白",8);
 4         c.eat();
 5         c.sleep();
 6 
 7         JumpCat js = new  JumpCat("跳高猫",9);
 8         jc.eat();
 9         jc.sleep();
10         jc.jump();
11 }
12 
13 abstract class Animal {
14     private String name;                               // 姓名 
15     private int age;                                      //年龄
16 
17     public Animal(){}                                   // 空参构造 
18 
19     public Animal(String name,int age){        //有参构造 
20 
21             this.name = name;
22             this.age = age;
23     }
24 
25     public void setName(String name){        //设置姓名 
26         this.name = name;
27     }
28 
29     public String getName(){                      // 获取姓名 
30         return name;
31     }
32 
33     public void setAge(int age){                 //设置年龄 
34         this.age = age;
35     }
36 
37     public String getAge(){                      //获取年龄 
38         return age;
39     }
40 
41     public abstract void eat();                 //吃饭 
42 
43     public abstract void sleep();              //睡觉 
44 
45 
46 }
47 interface Jumping {                              //跳高接口
48     public void jump(){};
49 }
50 class Cat extends Animal
51 {
52     public Cat(){}                                  //空参构造
53 
54     public Cat(String name,int age){       //有参构造 
55         super(name,age);
56     }
57 
58     public void eat(){                        
59         System.out.println("猫吃鱼");
60     }
61     public void sleep(){
62         System.out.println("躺着睡");
63     }
64 
65 }
66 
67 class JumpCat extends Cat implements Jumping {
68     public void jump(){
69 
70     public JumpCat(){}                                   //空参构造 
71 
72     public JumpCat(String name,int age){        //有参构造 
73         super(name,age);
74     }
75     System.out.println("猫跳高");
76     }
77 } 
案例

 

原文地址:https://www.cnblogs.com/Sherwin-liao/p/10938150.html