抽象类与接口

在类与类之间存在继承关系时,有可能会出现父类存在一种功能(方法),但在不同子类中该方法内容不一样。比如动物都有吃的功能,而猫吃老鼠,狗吃骨头,两者内容不一样,这时,就要使用抽象类。

实例解释:

abstract class Animal//class前要加abstract关键字
{
    astract void eat();//不能确定的功能也要加abstract,这称为抽象函数,而且该函数没有主体,分号结束
    void sleep()
    {
        System.out.println("睡觉");
    }
}
class Cat extends Animal
{
    public void eat()//子类要把父类中的抽象函数重写掉
    {
        System.out.println("吃老鼠");
    }
}
class Dog extends Animal
{
    public void eat()
    {
        System.out.println("吃骨头");
    }
}
注意事项:1,如果子类没有把父类中的所有抽象函数重写掉的话,子类也必须定义为抽象类。

   2,抽象类不能建立对象。

在子类较少时,内容不同的同一功能可以不定义在父类中,而是定义为子类的特定功能,但是如果子类种类很多,就应该使用抽象类,以免功能丢失。

================================================================================================================

接下来要说的是接口,接口其实就是特殊的抽象类,接口中的所有函数都是抽象函数,接口也有子类,子类并不是继承接口,而是实现接口(其实基本用法一样),关键字为implements,而定义接口时还要用到的关键字是interface,取代class。

举个例子展示一下格式:

interface KaiGuan//接口的定义(名字是开关。。。。)
{
    public abstract void open();
    public abstract void close();
}
class Light implements KaiGuan//implements关键字完成实现开关接口
{
    public void open()
    {
        System.out.println("开灯");
    }
    public void close()
    {
        System.out.println("关灯");
    }
};
接口的功能:有利于程序功能的扩展,有利于开发的模块化,至于具体例子,等学完多态就明白了。

接口的特点:1,接口可以多实现,这也是与继承之间最大的区别,在类中,如果实现多继承,那么如果不同父类中含有同名功能,在通过子类对象调用该功能时,就会出错,     因为不知道要调用哪个函数,而对于接口,由于接口中定义的全是抽象函数,无函数主体,只有被子类重写后才有用,并且以子类中定义的为准,因此不存在     矛盾。

      2,接口中的成员有固定的修饰符,其中常量是public static final,方法是public abstract,一般不会在接口中定义变量,这些修饰符是固定的,即使忘了写,系统也             会默认加上(隐式)。

====================================================================================================================

既然上面讲到了final这个修饰符,那就要讲一下。

final可以用来修饰常量(final变量),方法以及类。

常量的修饰:final 类型 常量名=值;被final修饰过的变量只能被赋值一次,换句话说,在接下来的代码中,不能对final变量的值进行修改。

方法的修饰:final 类型 方法名(参数){主体} 被final修饰过的方法不能被重写。可以把类中一些重要的方法用final去修饰,防止被重写。

类的修饰:final class 类名{主体} 被final修饰过的类不能被继承,而且类中所有方法也默认被final修饰。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值