欢迎来到天天文库
浏览记录
ID:1693426
大小:95.00 KB
页数:12页
时间:2017-11-13
《java语言面向对象知识小结及答疑》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、面向对象知识小结及答疑一、面向对象基本概念回顾Java的面向对象概念,绝大部分是模拟现实世界中的事物而设计的。继承:根据功能和用途,将类按照层次关系进行设计。越在下层的类,功能越多越具体;越在上层的类,其“权力”越大。类一方面使得学习出现了暂时的困难,但也使得代码的复用变得很有意思。系统提供的标准类,其名字必须要经常查阅翻译辞典以加深印象。构造方法:对象在新生成的时候必须要执行的方法,名字应该和类名字完全一致。classA{intx;A(){x=2;}A(intx){this.x=x;}voidprint(){Sys
2、tem.out.println(“x=”+x);}}默认情况下,A()构造方法默认是会自动生成的,当然里面一点代码都没有(也就是说,你不写的话,系统会帮你写上一个空架子的构造方法)。构造方法前面必须是没有“返回类型”的。另外,类中的任何除构造方法之外的其它方法必须要“返回类型”的。方法重载:在类中存在两个同名的方法,但方法的参数类型不相同。voidprint(intx){…}voidprint(inta){…}注意,上面写的这两个方法不能叫重载的(参数个数、类型完全相同)方法重写/覆盖:在子类和父中存在两个同名、同参
3、数的方法。访问修饰符:private,protected,public,(默认)static,final对类中的一个static方法来说,它可以直接通过类名进行调用,而不需要生成对象。final放在一个变量前面,表示这是一个常量,只能有一个值。final放在一个方法前面,表示这是一个不能被覆盖的方法。final放在一个类前面,表示这是一个最终类,它不能被别的类继承。抽象类:就是在class之前加了一个abstract的类,这样的类就不能用来生成对象了。因此,通常如果一个类不适合生成对象的话,我们就要把这个类定义成抽象
4、的。或者,如果一个类中包含了没有方法体的方法(也就是抽象方法),这样的类也必须定义成抽象类。其它类继承了抽象类的话,就必须补全这个抽象类中的所有抽象方法的具体代码。abstractclassA{intx;abstractvoidprint();}接口:在其中只定义抽象方法。接口的目的,是为了强制某些类中必须具有同样的方法。因此,只要类实现了接口,这些类就必须提供接口中方法的具体代码。因此这些类看起来就有了一些共性了(都包含了接口中规定的方法)。这是接口的一个强制规定。此外,接口中的抽象方法必须是public的,如果不
5、写上的话,系统会自定帮我们加上。习惯上我们还是自己写上public。interfaceC{publicvoidprint();}classAimplementsC{intx;publicvoidprint(){System.out.println(“x=”+x);}}classBimplementsC{publicvoidprint(){System.out.println(“hello”);}}上面的类A和类B因为实现了接口C,它们就必须提供接口C中规定的方法/函数,否则编译就报错了。这就是接口的一大特点。接口可以
6、这样使用:Cc=newA();c.print();//其实是调用A类的对象中的print()方法c=newB();c.print();//其实是调用B类的对象中的print()方法可见,接口变量能够指向任何实现了该接口的类的对象,但只能调用对象中的那些“由接口规定的”方法。对接口变量c来讲,无论它指向的是A类对象还是B类对象,接口变量c只知道对象中有print()方法(也就是接口C中规定的方法),对象中的其它内容,接口变量c则一无所知。如同一个USB接口,可以插上任何实现了USB接口的实际设备,如插上优盘、移动硬盘等
7、等。但是若移动硬盘还有MP3播放功能的话,我们的USB接口也不会知道。USB接口仍会把这种带有MP3播放功能的移动硬盘当作普通的移动硬盘来对待。那么在Java中又为什么需要接口呢?我们再看上面的这两个类,改写一下(去掉了implementsC语句):classA{intx;publicvoidprint(){System.out.println(“x=”+x);}}classB{publicvoidprint(){System.out.println(“hello”);}}现在的类A、B定义只是少了implement
8、sC,里面的内容和前面一模一样。唯一的不同是,类A、B里面的方法名字可以随便更改了(不会受任何约束):classA{intx;publicvoidprint222(){System.out.println(“x=”+x);}}classB{publicvoidshow(){System.out.println(“----”);}}我们看到,现在
此文档下载收益归作者所有