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 }