JAVA学习笔记(十六)-接口

接口的概念

/*
 * 接口Interface
 * 接口中没有构造方法,不能被实例化(抽象类有构造方法,但不是用来创建实例的,而是用来初始化成员的)
 * 
 * 类中方法如果不指定修饰符,则默认为default
 * 接口中方法如果不指定修饰符,则默认为public
 */
public interface Test02
{
    // 接口中的属性默认为public static final,即静态常量
    String name = "tom";

    // 接口中的方法默认为public abstract,即抽象方法
    void show();
}

interface Test03
{
    // 抽象方法
    public abstract double calcAvg(int num1, int num2);
}

/*
 * 抽象类
 */
abstract class Test04
{
    String sex = "男";
    static final double PI = 3.1415;

    public void print()
    {
        System.out.println("父类中的普通方法print");
    }

    //父类中的抽象方法
    public abstract int calcSum(int num1, int num2);
}

/*
 * 实现类
 */
class Test extends Test04 implements Test02, Test03
{
    // 实现接口Test02中的抽象方法
    public void show()
    {
        System.out.println("在实现类中实现接口Test02中的show方法");

    }

    // 实现接口Test03中的抽象方法
    public double calcAvg(int num1, int num2)
    {
        System.out.println("在实现类中实现接口Test03中的calcAvg方法");
        return (num1 + num2) / 2.0;
    }

    //实现父类Test04中的抽象方法
    public int calcSum(int num1, int num2)
    {
        System.out.println("在实现类中实现父类Test04中的calcSum方法");
        return num1+num2;
    }

    //重写父类Test04中的成员方法
    public void print(){
        System.out.println("在实现类中重写父类Test04中的print方法");
    }
}
/*
 * 测试类
 */
public class Test05
{
    public static void main(String[] args)
    {
        Test test=new Test();
        System.out.println(test.name);
        System.out.println(test.sex);
        test.show();
        System.out.println(test.calcAvg(2, 3));
        System.out.println(test.calcSum(2, 3));
        test.print();
    }
}

接口的继承问题

/*
 * 一个接口可以继承自多个接口,即一个接口可以有多个父接口
 * 
 * JAVA中支持接口的多继承,但只支持类的单继承
 * 
 * 自定义数据类型:普通类、抽象类、接口等
 */
public class Test06
{
    public static void main(String[] args)
    {
        A a;// 声明接口A的引用
        a=new D();//将接口A的引用指向其实现类D的实例
    }
}

interface A
{
    double PI = 3.14;

    public void show1();
}

interface B
{
    public void show2();
}

/*
 * 接口C同时继承自接口A、B
 */
interface C extends A, B
{
    public void show3();
}

/*
 * 实现类
 */
class D implements C
{

    @Override
    public void show1()
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void show2()
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void show3()
    {
        // TODO Auto-generated method stub

    }

}

接口与抽象类的关系


/*
 * 接口是一个"纯"抽象类
 * 抽象类中既可以有普通的成员方法,也可以有抽象方法 
 * 抽象类中既可以有普通的成员属性,也可以有静态常量
 */
public class Test07
{
    public static void main(String[] args)
    {
        Plane plane = new Plane();
        Bird bird=new Bird();

        IFly f = bird;
        f.fly();

    }
}

/*
 * 定义一个飞行接口,是一种标准、规范 方法:飞行
 */
interface IFly
{
    public void fly();
}

/*
 * 实现类Plane
 */
class Plane implements IFly
{

    @Override
    public void fly()
    {
        System.out.println("我是飞机,我有机翼,高科技飞行。。。");
    }
}

/*
 * 鸟类Bird
 */
class Bird implements IFly
{

    @Override
    public void fly()
    {
        System.out.println("我是一只小小鸟,我有翅膀,绿色环保。。。");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值