java抽象类和接口定义与用法详解
本文实例讲述了java抽象类和接口定义与用法。分享给大家供大家参考,具体如下:
抽象类
抽象类定义
只约定类所具有的抽象行为,没有具体实现相应行为。
语法格式
abstractclass类名{ 常量; 变量; 构造(); 访问修饰符abstract返回类型方法名;//抽象方法 普通方法; 静态方法(); }
应用场景
1.不适合创建对象。
2.有些功能没有必要实现,有不同的子类实现。
3.每次使用的都是子类的对象。
4.为所有的子类提供了一个模板,所有的子类都是在此模板的基础之上添加和修改完善功能而创建出来的。
注意事项
1.不能创建对象。
2.必须由子类继承使用。
3.普通的子类必须实现抽象类中的所有抽象方法。(抽象子类除外)
4.构造方法不能是抽象的。
5.abstract不能和private、final、static一起使用。
6.抽象类中的抽象方法不是必须的,可以写,可以不写。
abstractclassTrafficTool1{ intcount; publicabstractvoidrun();//抽象方法 } classCar2extendsTrafficTool1{ @Override publicvoidrun(){ System.out.println("汽车在公路上行驶"); } } classTube2extendsTrafficTool1{ publicvoidrun(){ System.out.println("地铁在地下行驶"); } } publicclassTestTrafficTool1{ publicstaticvoidmain(String[]args){ Car2c2=newCar2(); c2.run(); Tube2t2=newTube2(); t2.run(); } }
接口
定义接口
提供了一组规则。
访问修饰符interface接口名{//所有成员都是public 常量;//publicstaticfinal 抽象方法;//publicabstract 默认方法;//publicdefault类型名(){实现} 静态方法;//publicstatic类型名(){实现} //不能被实现类继承 //不能被子接口继承 静态内部类型;//(publicstatic内部类,内部接口,内部枚举) }
接口特点
1.接口不能创建对象。
2.由实现类来实现功能。
3.普通的实现类,必须实现接口中的所有抽象方法。(抽象实现类除外)
4.实现类可以实现多个接口的功能。
5.接口之间可以继承,而且可以多继承。
接口注意事项
1.静态方法不能被继承。静态方法用接口名.静态方法名调用
2.实现多个接口方法名相同的处理
接口在开发中,提供了一组规则和规范,一旦发布了,就不要更改了。
解决问题:用default
interfaceWebBank{ voidwebService();//网上支付功能 //publicabstractvoidwebService(); defaultvoidfd(){} } //实现类 classJingdongimplementsWebBank{ @Override publicvoidwebService(){ System.out.println("京东实现了支付功能"); } publicvoidshow(){} } classTaobaoimplementsWebBank{ publicvoidwebService(){ System.out.println("淘宝实现了支付功能"); } } publicclassTestWebBank{ publicstaticvoidmain(String[]args){ WebBankweb=newJingdong(); web.webService(); web.fd(); //web.show();//屏蔽 /*Jingdongjd=newJingdong(); jd.webService(); Taobaotb=newTaobao(); tb.webService();*/ } }
接口和抽象类的异同
相同
1.都不能创建对象
2.都需要用子类或实现类来继承或实现。
3.都可以包含抽象方法。
4.普通的子类或实现类需要实现所有的抽象方法(抽象的除外)。
不同
1.抽象类是个类,是个模板类,为子类提供模板,是个半成品。
2.接口是提供了一个功能,是一个规范。
3.抽象类子类是单一继承。
4.实现类可以实现多个接口。
5.接口之间可以多继承。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。