Java基础之接口

Java接口

Java不支持多继承性,即一个子类只能有一个父类;单继承使得java简单,易于管理,但如果要克服单继承性的缺点就要使用接口技术,是一个类可以实现多个接口,用关键字interface关键字来定义一个接口。

  1. 接口声明:interface 接口名; 接口体:包括常量定义和方法定义,方法只允许声明不允许实现。
  2. 口使用:class A implements print,add 或者 class A extends A1 implements print,add
  3. 当某个类使用接口的时候,必须给出所有方法的实现,方法的类型、参数一定要和接口的一致;接口的方法默认为public abstract,故类在实现时一定不能漏写public关键字;接口常量默认关键字为public static

Demo:

package Study;

/**
 * 接口
 * 接口里面只能包含抽象方法(抽象是完全抽象化的类,里面没有完整的方法)
 * 我们可以通过接口定义一个功能(其他类可以实现这个接口来拥有这个功能)
 * 用来扩展功能
 * 接口可以被实现,不能被继承(接口里面只是定义了一些东西,并没有可以被实际继承的数据或者方法[属性和行为])
 **/
public class InterfaceDemo {
    public static void main(String agrs[]) {
        O o =new B();
        o.methodA();
        o.methodB();
        o.methodC();

    }

    interface O {
        void methodA();

        void methodB();

        void methodC();
    }
//类可以被继承,接口可以被实现
    static class B implements InterfaceDemo.O {

        public void methodA() {
            System.out.println("Hello World");
        }

        public void methodB() {
            System.out.println("Hello Android");
        }

        public void methodC() {
            System.out.println("Hello Javascript");
        }
    }
}

一个类只能继承一个抽象类,而一个类却可以实现多个接口。

package Study;

public class InterfaceDemo2 {
    public static void main(String args[]){
        C c=new C();
        c.methodA();
        c.methodB();
        c.methodC();
        c.eat();
        c.sleep();
        c.talk();
    }
}

interface M {
    void eat();
    void sleep();
    void talk();
}
class C implements InterfaceDemo.O,M {
    @Override
    public void methodA() {
        System.out.println("Hello World");
    }

    @Override
    public void methodB() {
        System.out.println("Hello Android");
    }

    @Override
    public void methodC() {
        System.out.println("Hello Javascript");
    }

    @Override
    public void eat() {
        System.out.println("你在吃饭");
    }

    @Override
    public void sleep() {
        System.out.println("你在睡觉");
    }

    @Override
    public void talk() {
        System.out.println("你在讲话");
    }
}

接口与接口:可以多继承,但一般开发不怎么用

package Study;
//接口与接口:可以多继承,但一般开发不怎么用
public class InterfaceDemo3 {
    public static void main(String args[]){
        E e =new E();
        e.v();
        e.x();
        e.y();
        e.z();
    }
}
interface L {
    void x();
    void y();
}
//接口Z继承L
interface Z extends L{
    void z();
    void v();
}
class E implements Z{

    @Override
    public void x() {
        System.out.println("X");
    }

    @Override
    public void y() {
        System.out.println("Y");
    }

    @Override
    public void z() {
        System.out.println("Z");
    }

    @Override
    public void v() {
       System.out.println("V");
    }
}

接口做功能扩展Demo:

package Study;
//接口做功能扩展的实例
//老师教学和招生的功能
public class InterfaceDemoExpandFunction {
    public static void main(String args[]) {
        Teacher teacher = new Teacher("王二狗", 22);
        System.out.println(teacher.name+" "+teacher.age);
        teacher.teach();
        teacher.pick();
    }
}
class data {
    String name;
    int age;

    public data(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
interface Teach{
    void teach();
}
interface Pick{
    void pick();
}
class Teacher extends data implements Teach,Pick{

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

    @Override
    public void teach() {
        System.out.println("老师具有教学功能");
    }

    @Override
    public void pick() {
        System.out.println("老师具有招生功能");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值