Java抽象类和接口

博客搬家了,最近同时更新,没准什么时候就完全搬走了-_-
http://blog.just666.cn 这个是新博客地址,希望大家多多关照

最近在Java的抽象类和接口这里比较迷茫,自己看了看书,写了写代码,熟悉了一下,现在把自己的心得贴出来,一是为了总结经验,二也是为了分享。如果内容有什么不妥当的,请务必联系我更正,谢谢。

抽象类:

abstract 抽象修饰符—–抽象就是为了让子类继承的
抽象类中的所有抽象方法都要在子类中实现
拥有抽象方法的类必须声明为抽象类
抽象类可以有非抽象方法的方法

接口:

interface 接口修饰符—–接口也是为了让子类继承的
变量默认是public static final 且不能改变
方法默认是public abstract 且不能改变
接口不实现方法

抽象类和接口的区别:

抽象类可以实现方法细节,接口不能
抽象类的变量可以是各种类型的,接口不能
抽象类可以有静态代码块和静态方法,接口不能
一个类可以实现多个接口,而只能继承自一个抽象类
继承可以理解成“是不是”,接口可以理解成“有没有”

示例:
定义一个接口CanFly

public interface CanFly {

    public abstract void fly();

}

定义一个抽象类Bird

public abstract class Bird {

    int age;

    void eat(){
        System.out.println("I can eat insect~");
    }

}

定义一个Sparrow类继承自Bird

public class Sparrow extends Bird implements CanFly{

    public void fly(){
        System.out.println("I can fly");
    }

}

定义一个抽象类Airplane

public abstract class Airplane {

    double price;//价格

    void Crash(){   //坠毁
        System.out.println("This airplane is crashed!");
    }

}

定义一个Jian_10类继承自Airplane

public class Jian_10 extends Airplane implements CanFly{

    public void fly(){
        System.out.println("I can fly");
    }

}

定义一个包含主方法的类,来测试

public class Main {

    public static void main(String[] args) {
        Jian_10 A_0 = new Jian_10();//实例化A_0号战机
        Sparrow xiaoMing = new Sparrow();//没错,这只麻雀叫小明

        //我们都能飞
        A_0.fly();
        xiaoMing.fly();

        //小明吃饭了
        xiaoMing.eat();

        //战机坠毁了
        A_0.Crash();
    }

}

运行结果是这样的运行结果

大概是这么回事:
Airplane和Bird是两个抽象类,Jian_10和Sparrow分别继承自他们,所以子类可以直接调用父类的方法。且Jian_10和Sparrow还有接口CanFly 。然后Jian_10和Sparrow实现了接口CanFly中声明的fly方法(必须实现)。
如果以后想要修改Airplane和Bird两个父类的方法的时候,比如我不想让Bird吃东西了或者Airplane不会坠毁了,就只需要修改Airplane和Bird中相应的方法。

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

比如,Airplane和Bird有很多相同的方法,但是实现不尽相同,我们就可以把这些方法放到一个接口中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值