《类、抽象类、接口、继承和对象(java)》-

《类、抽象类、接口、继承和对象(java)》-

ID:34422171

大小:28.00 KB

页数:4页

时间:2019-03-06

《类、抽象类、接口、继承和对象(java)》-_第1页
《类、抽象类、接口、继承和对象(java)》-_第2页
《类、抽象类、接口、继承和对象(java)》-_第3页
《类、抽象类、接口、继承和对象(java)》-_第4页
资源描述:

《《类、抽象类、接口、继承和对象(java)》-》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、类、抽象类、接口、继承和对象(java)来源:JAVA中文站(www_java-cn_com)这不是什么教材,笔者有时会在论坛上瞧瞧,看到不少初学者问到很多问题,这些问题是java程序员应该懂得的,而一般书上不会讲到或者一笔带过的知识。因此斗胆涂鸦一篇文章,把想说的在这里一口气说完。这也是本人第一次写技术性的文章,文笔不畅之外,还请各位见谅。首先讲清楚类和对象的区别。类是广泛的概念,表示一个有共同性质的群体,而对象指的是具体的一个实实在在的东西。例如,“人”是一个类,它可以表示地球上所有的人;而“张三”、“李四”、“爱因斯坦”等则是一个个的对象,或者说它

2、们是“人”这个类的一个个实例。在Java中,我们可以定义类,然后创建类的对象。例如://声明一个类“Human”classHuman{   privateStringname;   publicStringgetName(){       returnname;   }   publicvoidsetName(Stringvalue){       this.name=value;   }   //......}创建一个类:Humanhuman=newHuman();其次,很多人对对象和对象的引用认识模糊引用是程序操作对象的句柄,相当于C和C++中的指针

3、。前面说了,对象是一个实实在在的东西,比如前面的代码:Humanhuman=newHuman();程序执行到这里之后,java虚拟机将会在内存中创建一个Human对象,并将这个对象的引用赋给human变量。这里有两步,首先是创建Human对象,然后把创建的对象的引用赋给human变量。如果声明了一个对象的引用,但没有将对象赋值给它,则这个引用指向了空的对象,或者说引用了不存在的对象。这时如果想通过这个引用访问对象,则会抛出空指针异常,例如:Humanhuman;//......human.setName("张三");下面重点谈一谈类、抽象类、接口和继承之

4、间的关系不少细心的初学者在论坛上问类似这样的问题:1、接口不实现方法,但我却在程序中可以调用接口的方法,这是为什么?比如java.sql包中的Connection、Statement、ResultSet等都是接口,怎么可以调用它们的方法呢?2、抽象类不能实例化,但是jdk中却有很多抽象类的对象,这是为什么?比如System.in是一个InputStream类型对象,但InputStream是抽象类,怎么可以得到它的对象呢?不管怎么样,大家应该明白一点:不管是抽象类中的抽象方法,还是接口中定义的方法,都是需要被调用的,否则这些方法定义出来就没有意义了。可能

5、有很多书上没有提到,或者提到了而读者没有注意到这一点:一个子类如果继承了它的基类,则表示这个类也是其基类的一种类型,这个子类的一个对象是子类类型,并且同时也是其基类的一个对象,它也具有基其类的类型;一个类如果实现了一个接口,则表示这个类的一个对象也是这个接口的一个对象。可能这样说不太好懂,又是子类、基类、类型、接口什么的,容易搞混。其实举个现实的例子你就会觉得其实很简单:如果“人”是一个基类,则“男人”是“人”的一个子类。如果“张三”是一个“男人”,也就是说“张三”是“男人”的一个对象,那么显然“张三”也是“人”这个基类的一个对象。明白了这一点,就容易理

6、解为什么我们可以得到抽象类的对象了:原来我们得到的抽象类的对象其实是它的已经实现了抽象方法的子类或子孙类的一个对象,但我们拿它当它的抽象类的基类来用。比如“人”这个类,每个人都会“悲伤”,男人悲伤的时候抽烟、喝酒,女人悲伤的时候哭泣、流泪。由于不同的子类在“悲伤”时所进行的动作不一样,因此这个动作(方法)在基类中不好实现,但基类中又需要有这个方法,因此,“人”这个类就可以定义一个抽象方法“悲伤”,由其子类“男人”和“女人”来实现“悲伤”这个方法。但是调用者只把男人和女人的对象当作其基类“人”的一个对象,调用它的“悲伤”方法。读者可以去体验一下jdk的抽象

7、类java.lang.Process:Runtimeruntime=Rumtime.getRuntime();Processprocess=rumtime.exec("notepad.exe");Classcls=process.getClass();System.out.println(cls.getName());这时会打印出process类的名字,如果在Windows下它会是一个类似于*Win32*的名字,它是Process的一个子类。因为process类用于管理打开的进程,而在不同的操作系统上都有不同的实现,因此它把方法定义为Process的抽象

8、方法,而具体的操作只能由对应在不同操作系统下的子实现。下面来谈接口,我们知道接口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。