JAVA入门之接口 笔记(27)

导读:本篇文章讲解 JAVA入门之接口 笔记(27),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、接口概述

说起接口,我们不由自主就会想到笔记本上的USB接口或者墙壁上的接口,而在JAVA中的接口与现实中的接口有相似之处,都是一种公共的规范标准,只要符合规范标准,大家都可以通用
但是JAVA中的接口更多体现在对行为的抽象

二、接口的特点

  • 接口用关键词interface(public interface 接口名{ })修饰
  • 类实现接口用implements表示(public class 类名 implements 接口名{ })
  • 接口不能实例化
  • 接口若要实例化,需要参照多态的方式,通过实现类对象实例化,这叫接口多态
  • 多态的形式:具体类多态,抽象类多态,接口多态
  • 多态的前提:有继承或者实现关系;有方法重写;有父(类、接口)引用指向(子/实现)类对象
  • 接口的实现类,要么重写接口中的所有抽象方法,要么是抽象类

三、接口的成员特点

  • 成员变量:只能是常量,默认修饰符是public static final
  • 构造方法:接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在,一个类如果没有父类,默认继承Object类
  • 成员方法:只能是抽象方法,默认修饰符是public abstract

四、例子

package TEXT;
/*
    跳高接口
 */
public interface Jumpping {
    public void jump();
}
package TEXT;
/*
    动物抽象类
 */
public abstract class Animal{
    private int age;//年龄
    private String name;//姓名

    public Animal() {
    }

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

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    public abstract void eat();//吃饭方法
}
package TEXT;
/*
    猫对象
 */
public class Cat extends Animal implements Jumpping {
    @Override
    public void jump() {
        System.out.println("猫跳高");
    }

    public Cat() {
    }

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

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

package TEXT;
/*
    狗对象
 */
public class Dog extends Animal implements Jumpping {
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

    public Dog() {
    }

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

    @Override
    public void jump() {
        System.out.println("狗跳高");
    }
}

package TEXT;

public class AnimalDemo {
    public static void main(String[] args) {
        Animal cat = new Cat();
        Animal dog = new Dog();

        cat.eat();
        ((Cat)cat).jump();//将cat强制转化为Cat再调用jump方法
        //定义类型是Animal引用类型,Animal引用类型并无jump方法,因此需要强转
        dog.eat();
        ((Dog)dog).jump();

        System.out.println("----------------------");

        Animal newCat = new Cat(20, "小白");
        Animal newDog = new Dog(18, "旺财");

        System.out.println("猫:" + newCat.getAge() + "+" + newCat.getName());
        System.out.println("狗:" + newDog.getAge() + "+" + newDog.getName());
    }
}

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95045.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!