java 接口 以及 与抽象类的区别

狭义概念 : Java 中的 interface

广义概念 : 对外提供规则的都是 接口


接口的定义方式 :  interface 接口名 { }

用类实现接口:       class 类名 implements 接口名 {     }


1. 接口不能被实例化;

2. 接口中的方法都是抽象方法;,系统会 默认加上 public abstract

3. 接口的实例化要按照多态的方式来实现 。‘

4. 接口的子类 可以是 抽象类 ,但一般不这样写; 可以是具体类。类中要重写接口中的所有方法

5.接口中的成员变量默认是 有 public static final 修饰的,不能更改,可以直接用 接口名. 变量名 调用


类与类的关系: 

            继承,只能是单继承,可以多层继承

类与接口的关系:  

         实现关系,可以单实现,也可以多实现

         可以在继承一个类的同时实现多个接口

接口与接口的关系:

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


 

 1 class Test1_Animal {
 2     public static void main(String[] args) {
 3         Cat c = new Cat("加菲",8);
 4         c.eat();
 5         c.sleep();
 6 
 7         JumpCat jc = new JumpCat("跳高猫",3);
 8         jc.eat();
 9         jc.sleep();
10         jc.jump();
11     }
12 }
13 
14 /*
15 * A:案例演示
16     * 动物类:姓名,年龄,吃饭,睡觉。
17     * 猫和狗
18     * 动物培训接口:跳高
19 */
20 
21 abstract class Animal {
22     private String name;                //姓名
23     private int age;                    //年龄
24 
25     public Animal() {}                    //空参构造
26 
27     public Animal(String name,int age) {//有参构造
28         this.name = name;
29         this.age = age;
30     }
31 
32     public void setName(String name) {    //设置姓名
33         this.name = name;
34     }
35 
36     public String getName() {            //获取姓名
37         return name;
38     }
39 
40     public void setAge(int age) {        //设置年龄
41         this.age = age;
42     }
43 
44     public int getAge() {                //获取年龄
45         return age;
46     }
47 
48     public abstract void eat();            //吃饭
49 
50     public abstract void sleep();        //睡觉
51 }
52 
53 interface Jumping {                        //跳高的接口
54     public void jump();
55 }
56 
57 class Cat extends Animal {
58     public Cat() {}                    //空参构造
59     
60     public Cat(String name,int age) {//有参构造
61         super(name,age);
62     }
63     public void eat() {
64         System.out.println("猫吃鱼");
65     }
66     public void sleep() {
67         System.out.println("侧着睡");
68     }
69 }
70 
71 class JumpCat extends Cat implements Jumping {
72     public JumpCat() {}                    //空参构造
73 
74     public JumpCat(String name,int age) {//有参构造
75         super(name,age);
76     }
77 
78     public void jump() {
79         System.out.println("猫跳高");
80     }
81 }
原文地址:https://www.cnblogs.com/gaoyang666/p/11102028.html