欢迎来到天天文库
浏览记录
ID:56999833
大小:96.00 KB
页数:26页
时间:2020-07-26
《抽象类的基本概念课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JAVA应用开发详解面向对象(高级)——抽象类的基本概念本章目标掌握抽象类的定义格式掌握抽象类的使用规则抽象类的定义及使用规则包含一个抽象方法的类必须是抽象类;抽象类和抽象方法都要使用abstract关键字声明;抽象方法只需声明而不需要实现;抽象类不能被直接实例化。抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。抽象类的定义格式abstractclass抽象类名称{属性;访问权限返回值类型方法名称(参数){//普通方法[return返回值];}访问权限abstract返回值类型方法名称(参数);//抽象方法//在抽象方法中
2、是没有方法体的}定义一个抽象类abstractclassA{publicstaticfinalStringFLAG="CHINA";privateStringname="李兴华";publicStringgetName(){//设置姓名returnname;}publicvoidsetName(Stringname){//取得姓名this.name=name;}publicabstractvoidprint();//定义抽象方法}继承抽象类abstractclassA{publicstaticfinalStringFLAG="CHINA";priva
3、teStringname="李兴华";publicStringgetName(){//设置姓名returnname;}publicvoidsetName(Stringname){//取得姓名this.name=name;}publicabstractvoidprint();//定义抽象方法}classBextendsA{//继承抽象类,覆写全部抽象方法publicvoidprint(){System.out.println("FLAG="+FLAG);System.out.println("姓名="+super.getName());}}public
4、classAbstractDemo02{publicstaticvoidmain(Stringargs[]){Bb=newB();//实例化子类对象b.print();//调用被子类覆写过的方法}}抽象类的图形表示抽象类的思考问题1:一个抽象类可以使用final关键字声明吗?问题2:一个抽象类中可以定义构造方法吗?回答问题一:一个类如果使用了final关键字声明,则此类不能被子类继承,而抽象类又必须被子类覆写,所以很明显,第一个问题的答案是:“一个抽象类不能使用final关键字声明”。问题二:实际上在一个抽象类中是允许存在构造方法的,因为抽象类依然使
5、用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前肯定是先要对父类进行实例化的。调用抽象类中指定参数的构造方法abstractclassPerson{//定义抽象类PersonprivateStringname;//定义name属性privateintage;//定义age属性publicPerson(Stringname,intage){//在抽象类中定义构造方法this.setName(name);//为name赋值this.setAge(age);//为age赋值}//setter、getterpublicabstractSt
6、ringgetInfo();//取得信息,抽象方法}classStudentextendsPerson{//定义子类privateStringschool;//定义school属性publicStudent(Stringname,intage,Stringschool){super(name,age);//调用父类中有两个参数的构造this.setSchool(school);//为school赋值}//setter、getterpublicStringgetInfo(){//覆写抽象类中的抽象方法return"姓名:"+super.getName(
7、)+";年龄:"+super.getAge()+";学校:"+this.getSchool();}}抽象类的实际应用——模板设计来看下面的这样一种场景:“假设人分为学生和工人,学生和工人都可以说话,但是学生和工人说话的内容是不一样的,也就是说说话这个功能应该是一个具体功能,而说话的内容就要由学生或工人来决定了”,所以此时就可以使用抽象类实现这种场景代码实现——PersonabstractclassPerson{//定义抽象类PersonprivateStringname;//定义name属性privateintage;//定义age属性publicP
8、erson(Stringname,intage){//为属性初始化this.name=name;//为nam
此文档下载收益归作者所有