java基础:接口+第五周上机作业

admin 401 0
摘要:

Java仅仅支持单继承,即一个类只能有一个父类。为了克服单继承的缺点,Java使用了接口技术,一个类可以实现多个接口中的功能。

概述/目的

Java仅仅支持单继承,即一个类只能有一个父类。为了克服单继承的缺点,Java使用了接口技术,一个类可以实现多个接口中的功能。

Java接口是一系列方法的声明,是一些方法特征的集合,可以简单理解成一个纯抽象类,但是不存在继承关系。对于使用接口的类而言,虽然我不直接继承你,但是我调用了你的功能。

声明

通过interface关键字声明,与类的声明相同。

内部变量必须定义成final并赋初值,后续不能修改,相当于宏常量,默认就是 public static final 类型(所以定义的时候可以不写final)。内部所有方法都默认是抽象方法,且只允许声明不允许定义。

interface Born{
    final int AGE =1;
    void playGame();
}

调用实现

使用关键字implements调用接口,使用多个接口时,接口名字之间用逗号隔开。

必须重新定义接口中的方法,实现接口方法时,必须加上public,保证访问权限不降低。

class Person implements Born{
    public void playGame{
        System.out.println("age:"+AGE+"    "+"play game!");
    }
}

接口回调

相当于上转型,把类转型成接口,把类的对象赋值给接口,只能访问接口中声明的方法。(见作业题中演示)

小结

接口定义了很多类都具有的功能,但不要求这些类之间存在继承关系。

只关心功能是否存在,但是不关注功能如何实现。

实现了多继承但是不存在多继承的层次问题,实现了不同类之间的常量共享,允许毫无关系的类的对象实现相同的功能。


第五周作业

要求

1.定义一个接口 Storable ,接口中一个方法 store()
2.定义三个类,UDisk,Cellphone,IPad,分别实现了该接口,内容是(System.out.println("该内容来自"+设备名称))
3.定义一个类 PrintShop,实现一个方法print方法,参数自己定义
4.主类中实现 实例化PrintShop,调用print方法,传入这三个类对应的对象,调用各自的store()方法

代码

package test0320_interface;

interface Storable
{
    abstract public void store();
}

class UDisk implements Storable
{
    @Override
    public void store()
    {
        
        System.out.println("该内容来自:"+this.getClass().getName());
    }
}
class Cellphone implements Storable
{
    @Override
    public void store()
    {
        System.out.println("该内容来自:"+this.getClass().getName());
    }
}
class IPad implements Storable
{
    @Override
    public void store()
    {
        System.out.println("该内容来自:"+this.getClass().getName());
    }
}
class PrintShop
{
    public void print(Storable u)
    {
        u.store();
    }
}

public class Test0320_Interface {
    public static void main(String[] args) {
       UDisk u = new UDisk();
       Cellphone c = new Cellphone();
       IPad i = new IPad();
       PrintShop pr = new PrintShop();
       pr.print(u);
       pr.print(c);
       pr.print(i);
    }    
}

运行效果

run:
该内容来自:test0320_interface.UDisk
该内容来自:test0320_interface.Cellphone
该内容来自:test0320_interface.IPad
发表评论 取消回复
表情 图片 链接 代码

分享