0
点赞
收藏
分享

微信扫一扫

Day12 Java 接口(未完结)

IT影子 2022-01-16 阅读 62

接口的特点:

1、使用interface关键字修饰:public interface 接口名{}

2、类实现接口使用implement表示:public class implement 接口名{}

3、接口不能实例化,接口实例化要参照多态,通过对象进行实例化,称之为:接口多态

多态分为:具体类多态,抽象类多态,接口多态

多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象

4、接口的实现类:如果是一个具体的实现类,需要重写接口中所有的抽象方法,或者是一个抽象类,可以不用重写

接口的成员特点:

1、构造方法:

接口没有构造方法,接口主要是对行为进行抽象的,没有具体的存在,一个类如果没有父类,默认继承自Object类

2、成员方法:

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

3、成员变量:成员变量变为常量

接口版猫狗案例:

public interface Test1 {//接口Test1
    public abstract void jump();
}

abstract class Animal {//抽象类Animal
    private String name;
    private int age;

    public Animal() {
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public abstract void eat();
}

class Cat extends Animal implements Test1 {//猫类继承动物,实现Test1

    public Cat() {
    }

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

    @Override
    public void jump() {
        System.out.println("🐱可以跳高了");
    }

    @Override
    public void eat() {
        System.out.println("🐱吃鱼");
    }
}

class Dog extends Animal implements Test1 {//狗类继承动物,实现Test1
    public Dog() {
    }

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

    @Override
    public void jump() {
        System.out.println("🐕可以跳墙了");
    }

    @Override
    public void eat() {
        System.out.println("🐕吃骨头");
    }
}

class Demo {
    public static void main(String[] args) {
        //使用接口多态创建对象
        Test1 t = new Cat();
        t.jump();
        //使用多态创建对象
        Animal a = new Cat();
        System.out.println("--------");
        a.setName("加菲");
        a.setAge(4);
        System.out.println(a.getName() + "," + a.getAge());
        a.eat();
        Cat c = (Cat) a;//向下转型    
        c.jump();
        System.out.println("===========");
        Test1 t2 = new Dog();
        t2.jump();
        Animal a2 = new Dog("阿拉斯加", 6);
        System.out.println(a2.getName() + "," + a2.getAge());
        Dog d = (Dog) a2;
        d.jump();
    }
}

类与接口之间的关系:

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

接口与接口之间的关系:

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

 抽象类与接口之间的区别:

1、成员区别:

抽象类有变量,常量;有构造方法,抽象方法,也有非抽象方法

接口只有常量和抽象方法

2、关系区别:

类与类之间的关系:继承,单继承

类与接口之间的关系:实现,单实现,也可以多实现

接口与接口之间的关系:继承,可以单继承,也可以多继承。

3、设计理念区别:

抽象类是对类抽象,包括属性、行为

接口是对行为抽象,主要是行为

举报

相关推荐

0 条评论