详解java面向对象的三大特性

详解java面向对象的三大特性

ID:39308941

大小:39.01 KB

页数:4页

时间:2019-06-30

详解java面向对象的三大特性_第1页
详解java面向对象的三大特性_第2页
详解java面向对象的三大特性_第3页
详解java面向对象的三大特性_第4页
资源描述:

《详解java面向对象的三大特性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、详解java面向对象编程的三大特性面向对象编程有很多种语言,用的比较多的是Java、C#、C++,还有一些不是很常见的Smalltalk、Simula,虽然都是同一个思想,但是语法不一样,在一些细节方面还是有点不同的。我个人对Java比较熟悉,所以下面我来详细解析Java的面向对象编程的三大特性。不管是什么编程语言,只要是它的设计思想是面向对象(ObjectOrientedProgramming,OOP)的都具备三个特性。即封装、继承、多态。要理解这三个特性。首先得了解面向对象的一些基础知识。面向对象有两个很重要的概念,这两个是必须要掌握的。那

2、就是对象(object)和类(class)。对象是具体的人或物。比如公交车就是一个具体的对象。类就是对具有相同或相似的对象的集合。比如说车就是一个类,它集合了公交车、小轿车、火车等各种车。好了,有了这些基本概念之后,才能够理解这三大特性。我觉得继承(extends)是最容易理解的。它表达的是“is-A”的关系。其实继承跟现实生活中的继承都差不多的,比如说如果父亲去世了,儿子就可以继承他的财产。在Java中只有类和类才有可能会发生继承关系。如果一个类继承了另一个类,被继承的类就是“父类”,继承的那个类就叫做“子类”,子类只能有一个父类,这个我们现

3、实生活很相似的,一个儿子只能有一个父亲。如果一个类继承了另一个类就具有父类的全部属性和方法(除了private之外)。下面我用代码来说明继承:classPerson{Stringname;Intage;privateintcode;//private权限不能被子类继承publicvoideat(){System.out.println(“人都具备吃饭的功能!”);}}classStudentextendsPerson//Student类继承了Person类,也就是学生继承了人{floatscore;publicvoidstudying(){Sy

4、stem.out.println(“学生具备学习的功能”);}//但是不能访问private权限的属性和方法,下面试图访问code属性将会出错//code=123;}继承的好处就是,如果一个子类继承了父类,他就可以拥有父类的所有属性和方法(除了private权限之外),而且还可以扩展父类的方法和增加自己的属性。继承的出现弥补了父类的不足,扩展了父类的原有方法。封装(encapsulation)指的是将对象状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。下面用代码解释。classM

5、an{//对属性封装,姓名,年龄,妻子的姓名都不对外公布,都是私有的privateStringname;privateintage;privateStringwifename;publicStringgetName(){Returnname;}publicintgetAge(){Returnage;}publicvoidsetAge(intage){This.age=age;}publicvoidsetName(Stringname){This.name=name;}privatevoidf()对方法的封装{//私有方法,只能在本类中被访问,私

6、有属性也如此}}其实封装的概念不仅此而已。类就是一个封装体,它封装了对象。包也是一个封装体,它封装了类。把封装的概念扩大化,框架就是对包的封装。为什么要出现封装呢?因为有一些成员变量(field)是不能够随意更改的,而且有些东西只要你知道怎么用就行了,没有必要关心那么多的细节。比如说,你想买电脑,你有必要去知道电脑怎么做出来的吗?最后一个就是多态了。我觉得不是那么的容易理解和掌握。对多态的理解:允许子类的对象被看作父类对象使用,而父类对象可以根据赋值的不同动态选择不同的方式运作。简单的说,就是事物具备多种形态。看下代码。classHuman{p

7、ublicvoideat(){System.out.println("人都会吃饭的");}}classStudentextendsHuman{publicvoideat(){System.out.println("学生吃饭");}publicvoidstudy(){System.out.println("学生学习");}}publicclassTuoTaiDemo{publicstaticvoidmain(Stringargs[]){//s对象编译时是Human类型,但是运行时却是Student类型的Humans=newStudent();//

8、向上转型s.eat();//所以此处调用的是Student的eat()方法Studentc=(Student)s;//向下转型c.study();//

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

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

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