java 抽象类总结_Java抽象类的总结

什么是抽象类:

当你在定义一个父级的类的时候,往往在父级内的方法没有添加任何内容,这时候如果你在子类里面调用父级的时候,万一在子类之中类名或者方法名没有写正确,会出现不执行的情况,但是这种情况默认是不报错的,此时如果将父级定义为抽象类的时候,子类必须有父类的内容,即写错名称会报错,这时候就体现抽象类的作用了。

总结两句话来说就是:

1.父类和子类中,父类的方法有很多情况下是没有内容的。

2.如果子类重写的时候写错,正常方法不会报错。

抽象类:

用abstract修饰的类叫做抽象类,抽象类不能被实例化,即不能new出来一个抽象类的对象。

抽象方法:

用abstract关键字修饰的方法叫做抽象方法,抽象方法必须定义在抽象类中。

抽象方法有声明,写法为后面不跟花括号,因为抽象方法不知道是给谁定义,所以可以不写函数体。

public abstract classYunSuan {protected inta;protected intb;public abstract voidQiuZhi();

}

抽象类和抽象方法的关系:

抽象方法必须定义在抽象类里面。

如果一个类包含了抽象方法,那么这个类一定要声明成抽象类。

如果某个类是抽象类,那么这个类既可以包含抽象方法,也可以包含具体的方法(有声明,有实现)。

抽象类中如果全是具体方法也是允许的;抽象类也可以是空的,即什么也不包含。

抽象类的继承:

当父类为抽象类的时候,子类继承父类,会出现两种情况,子类是抽象类,子类不是抽象类:

子类是抽象类的时候:

子类必须还要在class上定义一个abstract的关键字,子类可以选择实现或者不实现父类的抽象方法,因为抽象类中可以包含抽象方法和具体方法,所以子类中也可以全部写为具体方法,或者写为全部的抽象方法,亦或者抽象方法和具体方法都有。

子类不是抽象类的时候:

子类不是抽象类的时候,这时候子类就要全部实例化,也就是要把父类的抽象方法全部实现。这时候子类就不必使用abstract关键字了。

抽象类的具体用途:

抽象类的抽象方法定义一个规范,或者叫做约定,具体实现交给子类来做。

因为抽象类的实现可能无法完成或者没有意义。

例:

public abstract classUSB {public abstract voidQiDong();public abstract voidTingZhi();

}

先定义一个USB的抽象方法作为父类。

public class UPan extendsUSB {public voidQiDong(){

System.out.println("U盘启动了");

}public voidTingZhi(){

System.out.println("U盘停止了");

}

}

再定义一个UPan作为实例化子类,将父类的内容全部实例化。

public abstract class JianPan extendsUSB {public voidQiDong() {//TODO 自动生成的方法存根

System.out.println("键盘启动了");;

}

}

再定义一个JianPan作为抽象化子类,只实现父类里面的QiDong。

public class LuoJiJianPan extendsJianPan {public voidQiDong(){

System.out.println("罗技键盘启动");

}

@Overridepublic voidTingZhi() {//TODO 自动生成的方法存根

System.out.println("罗技键盘停止了");;

}

}

最后定义一个LuoJiJianPan作为JianPan的子类,将JianPan继承下来的USB中未实例化的TingZhi实例化,再将JianPan中的QiDong重写。

public classDianNao {public voidUSBChaRu(USB usb){

usb.QiDong();

}public voidUSBBaChu(USB usb){

usb.TingZhi();

}

}

public static voidmain(String[] args) {

DianNao d= newDianNao();

LuoJiJianPan pan= newLuoJiJianPan();

d.USBChaRu(pan);

d.USBBaChu(pan);

}

输出一下的结果为:

罗技键盘启动

罗技键盘停止了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值