java基础学习总结抽象类

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

java基础学习总结——抽象类一、抽象类介绍下面通过一下的小程序深入理解抽象类因此在类Animal里面只需要定义这个enjoy()方法就可以了,使用abstract关键字把enjoy()方法定义成一个抽象方法,定义如下:publicabstractvoidenjoy();从某种意义上来说,抽象方法就是被用来重写的,所以在父类声明的抽象方法一定要在子类里面重写。如果真的不想在子类里面重写这个方法,那么可以再在子类里面把这个方法再定义为抽象方法,因为子类觉得我去实现也不合适,应该让继承我的子类去实现比较合适,因此也可以在继承这个子类的下一个子类里面重写在父类里面声明的抽象方法,这是可以的。这里有一个规则:既然父类里面的方法是抽象的,那么对于整个类来说,它就有一个没有实现的方法,这个方法不知道怎么去实现,那么这个类是就是残缺不全的,因此这个类应该被定义为一个抽象类。所以前面这样声明的声明的classAnimal应该要在class的前面加上abstract,即声明成这样:abstractclassAnimal,这样Animal类就成了一个抽象类了。Animal类的最终定义代码如下:复制代码1/**2*父类Animal3*在class的前面加上abstract,即声明成这样:abstractclassAnimal4*这样Animal类就成了一个抽象类了5*/6abstractclassAnimal{78publicStringname;910publicAnimal(Stringname){11this.name=name;12}1314/**15*抽象方法16*这里只有方法的定义,没有方法的实现。17*/18publicabstractvoidenjoy();1920}复制代码Java语言规定,当一个类里面有抽象方法的时候,这个类必须被声明为抽象类。子类继承父类时,如果这个父类里面有抽象方法,并且子类觉得可以去实现父类的所有抽象方法,那么子类必须去实现父类的所有抽象方法,如:复制代码1/**2*子类Dog继承抽象类Animal,并且实现了抽象方法enjoy3*@authorgacl4*5*/6classDogextendsAnimal{7/**8*Dog类添加自己特有的属性9*/10publicStringfurColor;1112publicDog(Stringn,Stringc){13super(n);//调用父类Animal的构造方法14this.furColor=c;15}1617@Override18publicvoidenjoy(){19System.out.println(狗叫....);20}2122}复制代码这个父类里面的抽象方法,子类如果觉得实现不了,那么把就子类也声明成一个抽象类,如:复制代码1/**2*这里的子类Cat从抽象类Animal继承下来,自然也继承了Animal类里面声明的抽象方法enjoy(),3*但子类Cat觉得自己去实现这个enjoy()方法也不合适,因此它把它自己也声明成一个抽象的类,4*那么,谁去实现这个抽象的enjoy方法,谁继承了子类,那谁就去实现这个抽象方法enjoy()。5*@authorgacl6*7*/8abstractclassCatextendsAnimal{910/**11*Cat添加自己独有的属性12*/13publicStringeyeColor;1415publicCat(Stringn,Stringc){16super(n);//调用父类Animal的构造方法17this.eyeColor=c;18}19}复制代码这里的子类Cat从抽象类Animal继承下来,自然也继承了Animal类里面声明的抽象方法enjoy(),但子类Cat觉得自己去实现这个enjoy()方法也不合适,因此它把它自己也声明成一个抽象的类,那么,谁去实现这个抽象的enjoy方法,谁继承了子类,那谁就去实现这个抽象方法enjoy()。如:复制代码1/**2*子类BlueCat继承抽象类Cat,并且实现了从父类Cat继承下来的抽象方法enjoy3*@authorgacl4*5*/6classBlueCatextendsCat{78publicBlueCat(Stringn,Stringc){9super(n,c);10}1112/**13*实现了抽象方法enjoy14*/15@Override16publicvoidenjoy(){17System.out.println(蓝猫叫...);18}1920}复制代码完整的测试代码如下:复制代码1packagejavastudy.summary;23/**4*父类Animal5*在class的前面加上abstract,即声明成这样:abstractclassAnimal6*这样Animal类就成了一个抽象类了7*/8abstractclassAnimal{910publicStringname;1112publicAnimal(Stringname){13this.name=name;14}1516/**17*抽象方法18*这里只有方法的定义,没有方法的实现。19*/20publicabstractvoidenjoy();2122}2324/**25*这里的子类Cat从抽象类Animal继承下来,自然也继承了Animal类里面声明的抽象方法enjoy(),26*但子类Cat觉得自己去实现这个enjoy()方法也不合适,因此它把它自己也声明成一个抽象的类,27*那么,谁去实现这个抽象的enjoy方法,谁继承了子类,那谁就去实现这个抽象方法enjoy()。28*@authorgacl29*30*/31abstractclassCatextendsAnimal{3233/**34*Cat添加自己独有的属性35*/36publicStringeyeColor;3738publicCat(Stringn,Stringc){39super(n);//调用父类Animal的构造方法40this.eyeColor=c;41}42}4344/**45*子类BlueCat继承抽象类Cat,并且实现了从父类Cat继承下来的抽象方法enjoy46*@authorgacl47*48*/49classBlueCatextendsCat{5051publicBlueCat(Stringn,Stringc){52super(n,c);53}5455/**56*实现了抽象方法enjoy57*/58@Override59publicvoidenjoy(){60System.out.println(蓝猫叫...);61}6263}6465/**66*子类Dog继承抽象类Animal,并且实现了抽象方法enjoy67*@authorgacl68*69*/70classDogextendsAnimal{71/**72*Dog类添加自己特有的属性73*/74publicStringfurColor;7576publicDog(Stringn,Stringc){77super(n);//调用父类Animal的构造方法78this.furColor=c;79}8081@Override82publicvoidenjoy(){83System.out.println(狗叫....);84}8586}8788publicclassTestAbstract{8990/**91*@paramargs92*/93publicstaticvoidmain(String[]args){9495/**96*把Cat类声明成一个抽象类以后,就不能再对Cat类进行实例化了,97*因为抽象类是残缺不全的,缺胳膊少腿的,因此抽象类不能被实例化。98*/99//Catc=newCat(Catname,blue);100Dogd=newDog(dogname,black);101d.enjoy();//调用自己实现了的enjoy方法102103BlueCatc=newBlueCat(BlueCatname,blue);104c.enjoy();//调用自己实现了的enjoy方法105}106}复制代码JavaBean总结一、什么是JavaBeanJavaBean是一个遵循特定写法的Java类,它通常具有如下特点:这个Java类必须具有一个无参的构造函数属性必须私有化。私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。javaBean范例:复制代码1packagegacl.javabean.study;23/**4*@authorgacl5*Person类就是一个最简单的JavaBean6*/7publicclassPerson{89//------------------Person类封装的私有属性---------------------------------------10//姓名String类型11privateStringname;12//性别String类型13privateStringsex;14//年龄int类型15privateintage;16//是否已婚boolean类型17privatebooleanmarried;18//---------------------------------------------------------1920//------------------Person类的无参数构造方法---------------------------------------21/**22*无参数构造方法23*/24publicPerson(){2526}27//---------------------------------------------------------2829//------------------Person类对外提供的用于访问私有属性的public方法---------------------------------------30publicStringgetName(){31returnname;32}3334publicvoidsetName(Stringname){35this.name=name;36}3738publicStringgetSex(){39returnsex;40}4142publicvoidsetSex(Stringsex){43this.sex=sex;44}4546publicintgetAge(){47returnage;48}4950publicvoidsetAge(intage){51this.age=age;52}5354publicbooleanisMarried(){55returnmarried;56}5758publicvoidsetMarried(booleanmarried){59this.married=married;60}61//---------------------------------------------------------62}复制代码JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。二、JavaBean的属性JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、getter方法,setter方法称为属性修改器,getter方法称为属性访问器。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。属性访问器通常以小写的get前缀开始,后跟属性名

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功