01_接口
01.1_接口定义:
- 是为了定义一些额外扩展的功能,哪些事物想要具备这些功能,可以对该接口进行实现。interface.
- 父接口指向子类对象,这也是多态。
01.2_接口不能实例化
- 接口的子类有两种选择,一种是重写接扣中的所有抽象方法
- 自己本身就是一个抽象类。
01.3_接口中成员特点
1、接口中的成员变量,全部是公共的静态常量。因为前面存在默认修饰符。public static final
2、接口中不允许存在方法的具体实现(dk1.7).方法的前面存在默认修饰符public abstract
3、接口中没有构造方法。
4、接口不能实例化就是不能new对象。
01.4_类与类,类与接口,接口与接口的关系
类和类之间的关系,继承关系而且是单继承
类和接口之间的关系是实现关系。并且可以多实现
一个类可以实现多个接口
接口和接口之间的关系:继承关系,而且是多继承
注意
- jdk1.8之后允许给出方法的具体实现,但是这个方法得用default来修饰。
- 1.8之后,接口中还可以定义静态方法
- Java中的接口更多是来定义一些规则和规范的,已实现这个扩展性。
01.5_抽象类和接口区分一下
成员区别
抽象类:
成员变量:可以变量,也可以常量
构造方法:有
成员方法:可以抽象,也可以非抽象
接口:
成员变量:只可以常量
成员方法:只可以抽象
关系区别
类与类
继承,单继承
类与接口
实现,单实现,多实现
接口与接口
继承,单继承,多继承
设计理念区别
抽象类 被继承体现的是:”is a”的关系。 抽象类中定义的是该继承体系的共性功能。
接口 被实现体现的是:”like a”的关系。 接口中定义的是该继承体系的扩展功能。
-
设计思想;抽象类,它是抽象所有子类的共性功能,并不给出共性功能的具体实现,而是交友子类根据自身进行具体实 现.
-
接口体现一种扩展sixiang们通常用来定义一些规范和规则,哪些事物想要具备这些功能,可以实现接口,接口只要维护规范规则。
案例演示:
package com.Homework.day09.Demo; public abstract class Animal { String name; int age; public abstract void eat(); public abstract void sleep(); } ------------------ package com.Homework.day09.Demo; //跳高接口 public interface Jump { void jump(); } ---------------------- package com.Homework.day09.Demo; public class Tomcat extends Animal{ @Override public void eat() { System.out.println("小鱼干"); } @Override public void sleep() { System.out.println("站树上睡"); } } ------------------ package com.Homework.day09.Demo; public class Changecat extends Animal implements Jump{ @Override public void eat() { System.out.println("猫粮"); } @Override public void sleep() { System.out.println("沙发睡"); } @Override public void jump() { System.out.println("学会了眺高"); } } package com.Homework.day09.Demo; public class Taidog extends Animal{ @Override public void eat() { System.out.println("骨头"); } @Override public void sleep() { System.out.println("睡园子"); } } --------------------- package com.Homework.day09.Demo; public class Changedog extends Animal implements Jump{ @Override public void eat() { System.out.println("吃牛排"); } @Override public void sleep() { System.out.println("睡别墅"); } @Override public void jump() { System.out.println("狗狗学会了跳高"); } } ------------- package com.Homework.day09.Demo; public class Test { public static void main(String[] args) { //创建Tom猫的对象 Animal an=new Tomcat(); an.name="tomcat"; an.age=2; System.out.println(an.name); System.out.println(an.age); an.eat(); an.sleep(); //创建cat Animal an1=new Changecat(); an1.name="tiemao"; an1.age=3; System.out.println(an1.name); System.out.println(an1.age); an1.eat(); an1.sleep(); //向下转型 Changecat cc=(Changecat)an1; cc.jump(); } }