08-04 Java语言基础(接口)
发布日期:2021-05-06 23:59:23 浏览次数:16 分类:技术文章

本文共 1883 字,大约阅读时间需要 6 分钟。

接口概述和特点

从狭义角度来讲,就是java中的interface。从广义上来讲,对外提供规则的都是接口。

接口特点:

  • 接口用关键字interface表示

    interface 接口名 {}

  • 类实现接口用implements表示

    class A implements 接口 {}

  • 接口不能实例化,因为调用抽象方法没有意义

  • 接口的子类:可以是抽象类,也可以是非抽象类,如果是非抽象类,则要重写接口中的所有抽象方法。

接口的成员特点

成员变量:只能是常量,并且是静态的并公共的。默认修饰符:public static final

构造方法:接口没有构造方法
成员方法:只能是抽象方法,默认修饰符:public abstract

类与类、类与接口、接口与接口的关系

类与类:继承关系,只能单继承,可以多层继承

类与接口:实现关系,可以单实现,也可以多实现
接口与接口:继承关系,可以单继承,也可以多继承
总结:接口的出现弥补了类的单继承性带来的缺陷

抽象类和接口的区别

  • 成员区别:
    抽象类:
    成员变量:可以是变量,也可以是常量
    构造方法:有
    成员方法:可以抽象,也可以非抽象
    接口:
    成员变量:只可以是常量
    成员方法:只可以是抽象
  • 设计理念区别
    抽象类 被继承体现的是:“is a”的关系,抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:“like a”的关系,接口中定义的是该继承体系的扩展功能。

代码

public class Test03 {
public static void main(String[] args){
Cat c = new Cat("加菲", 8); c.eat(); c.sleep(); JumpCat jc = new JumpCat("小加菲", 10); jc.jump(); System.out.println(jc.getName()); }}abstract class Animal{
private String name; private int age; public Animal(){
} public Animal(String name, int age){
this.name = name; this.age = age; } public void setName(String name){
this.name = name; } public String getName(){
return name; } public void setAge(int age){
this.age = age; } public int getAge(){
return age; } public abstract void eat(); public abstract void sleep();}interface Jumping{
public abstract void jump();}class Cat extends Animal{
public Cat(){
} public Cat(String name, int age){
super(name, age); } public void eat(){
System.out.println("猫吃鱼"); } public void sleep(){
System.out.println("猫睡觉"); }}class JumpCat extends Cat implements Jumping{
public JumpCat(){
} public JumpCat(String name, int age){
super(name, age); } public void jump(){
System.out.println("猫跳高"); }}
上一篇:09-01 Java语言基础(package、import)
下一篇:08-03 Java语言基础(抽象类的概述和特点)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月17日 23时15分49秒