Java - 抽象类和接口

抽象类(接口的基础)

        在讲抽象类之前咱们先了解一下什么叫做抽象方法。

        什么是抽象方法?

               1.用abstract修饰的方法叫做抽象方法。

                        

                2.抽象方法只能被定义,不能被实现。

                3.抽象方法只能出现在抽象类里面。

        什么是抽象类?

              1.用abstract修饰的类叫做抽象类。

public abstract class Animal {}

              2.抽象类中可以有若干个抽象方法。

              3. 抽象类里面可以有一般的变量和方法,也可以有静态变量和方法。

              4.抽象类如果被继承,父抽象类中所有的抽象方法必须重写。如果没有完全重写父类所有的抽象方法,那么要将自己变成抽象类。抽象特性向下传递,直到重写完所有的重新方法。

                        eg:祖父有5个抽象方法,父类只重写祖父3个抽象方法,那么父类也要变成抽象类,子类继承父类未继承的2个抽象方法,子类就是普通类了。

              5.抽象类只能被继承不能被实例化。抽象类也具有继承的特性(详细版见多态(Java中面向对象的三大特征之一)-CSDN博客

                (1)子类拥有父类所有的属性和方法(子类是父类)

                (2)子类可以拥有自己的属性和方法(子类扩展父类)

                (3)父类可以装载子类(向上转型)

                        a.子类可以代替父类存在

                        b.声明父类,就调用父类的属性和方法

                        c.创建子类,就运行子类重写父类后的方法体,如果父类有方法没有被重写,依然运行的是父类的方法体。

                        d.父类可以强制转换为子类(向下转型)

抽象类,父类:Employee。

普通类,子类:Worker。

如下,若是,如果父类里面的抽象方法,没有重写完全,那么将会报错

修改普通类,子类,将子类也变成抽象的。


 测试类   

测试结果

接口

        什么是接口?

             1.接口是用interface定义的Java文件

             2.接口是纯虚的抽象类,接口也是半个类。

     注意:接口有属性,全部默认被static final 修饰,可以被视为常量,名字要大写且不能被修改

    注意:接口可以有一般的方法,方法默认被public abstract 修饰,可以被视为抽象方法。

              3.接口就是功能,功能就是接口。

                   接口定义了"能做什么"(功能),而不关心"如何做"(实现),如接口中一般的方法默认为抽象方法,只有方法原型,没有方法体。定义了方法原型就代表有了功能。方法体留有以后的类来实现。

        为什么要使用接口?

              因为Java中的继承是单继承,不能多继承,而有了接口就可以弥补单继承的不足,模拟多继承的效果。

                子接口可以继承多个父接口。子接口只继承父接口的功能,不重写父接口里面的方法。

 修饰符 interface  子接口  extends 父接口1,父接口2 {

..

}

                类可以实现多个接口。类实现接口,要重写接口里面所有的抽象方法

修饰符 class 类名 implements 接口1, 接口2,... {
...

}

4.面向接口编程

       接口往往用来完成一些功能,相当于半个类,开发过程中,接口可以提高开发效率,使

代码更容易维护。
       

5.接口也可以实现多态(多态是不同对象在调用同一个方法,表现出多种不同的行为。)

总结:

        什么是什么,可以理解为继承关系。

        什么能干什么,可以理解为接口的实现。

下面用一个具体的例子来介绍接口

接口Run

 

  接口Fly

接口:FlyAndRun(继承了Run 和 Fly)

Body类:Body类实现了接口FlyAndRun,    就必须重写接口里面所有的抽象方法

测试类

测试结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值