A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 明锦添 中级黑马   /  2013-3-22 09:15  /  1836 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java语言是面向对象的,它有哪些特点呢?这些特点给我们编程带来了哪些困扰和便利呢?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

正序浏览
1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
java面向对象的主要特点是继承、封装和多态。

继承:当多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行 为,只要继承单独的那个类即可。

封装:在开发中往往不需要知道类中的功能是怎么实现的,只需要告诉他有这个功能就行了,封装的出现就解决了该问题。

多态:事物往往存在多种表现形态,多态的出现就可以解决事物多种表现形态问题。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
首先,java和其他语言的区别,java语言是跨平台的,可以再不同的操作系统中使用,并且含有的垃圾回收机机制,可以帮粗心的我们,管理一些内存的消耗。

面向对象的语言都有封装、继承、多态的特点。

通过包的建立,恰当的访问符的设立,内部类的使用等可以对对象信息进行合理的封装。封装可以让我们看到那些想要的接口,隐藏那些不必了解的信息。打个比方,烤面包机,我们只要知道能帮我们烤面包就可以了,至于它怎么实现的,不用我们去了解,因为我只想要热乎乎的面包。

继承,可以让那些同一类型的对象,可以使用统一规定的接口和属性,避免了散乱了的局面。既然你想使用我,就必须得实现的我的接口。

多态就是指同一类型的对象,或者是父类型一样,不仅可以有相同的方法和属性,也可以添加自己的属性和方法。让同一类型的对象呈现不同的状态。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1.首先先试图理解面向对象:
定义一:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。

定义二: 面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。

面向对象方法从对象出发,发展出对象,类,消息,继承等概念。

2.然后理解面向对象的优点
面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。

说白了就是这个软件二次开发的利用率高

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
下面是我面向对象的学习日志,哥们看看能对你有帮助不?原来学习过c,感觉java面向对象这种思想很方便,指挥对象利用对象执行动作,现在还没遇到这种思想有哪些局限性。如果你有的话可以回帖交流~

3.1面向对象
面向对象的概念:
面向对象原来指是专指在程序设计中采用封装、继承、多态等设计方法。现在已经扩展到很多领域。和面向过程都是一种思想。
面向过程与面向对象的区别:
面向过程强调的功能行为,面向对象可以将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。
面向对象的特点:
1、        是一种符合人们思考习惯的思想。
2、        可以将复杂的事情简单化。
3、        将程序员从执行者转换成了指挥者。
4、        完成需求时:a、先去找具有所需的功能的对象来用。b、如果该对象不存在,那么创建一个具有所需功能的对象。C、这样可以简化开发并提高复用性。
  1. 代码演示
  2. class Car
  3. {
  4.         String color = "红色";
  5. int num = 4;// 成员变量定义在类中,整个类都可以被访问。
  6.         void run()
  7.         {
  8.                 System.out.println(color+".."+num);
  9.         }
  10.        
  11. }

  12. class  CarDemo
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 Car c = new Car();//建立一个c的类类型变量,当c作为对象建立时,c的颜色和轮胎数有了默认初始化的值,这两个成员变量随着c对象的建立,在堆内存中一起建立。示例图1
  17.                 c.color = "blue";//将对象c中成员变量color变为blue。这是在堆内存中改变的。
  18.                 c.run();//运行c的run函数,这是输出的color是blue和4
  19.                  Car c1 = new Car();//建立c1类类型变量,栈内存中有个c1,但是堆内存有new Car(),已经初始的Car内部的成员变量,c1指向new Car()的地址。示例图2.
  20.                 c1.run();//输出的是red..4
  21.                 c.num = 5;
  22.                 Car c1=c;
  23.                 c1 .color = green;
  24.                 c.run();//这个是出的是green和5,因为c的num是5,而c1指向了c的地址,c1的color改变成green的时候,也就是改变c的color,这样输出c.run()就是green和5。示例图3
  25.                 /*
  26. new Car().num = 5;//对匿名对象的成员变量赋值,为5。
  27. new Car().color = "blue";//对匿名函数的成员变量赋值,blue
  28.                 new Car().run();//运行匿名函数的成员函数,输出为红色和4.虽然有前面两条指令,但是匿名函数使用即为垃圾,第三条指令运行的仍然是堆内存中Car的初始成员变量值。不会因为上面两条指令而更改。上面两条指令会各自在堆内存中建立匿名函数。用完后会在某个时间段由java虚拟机自动垃圾回收器来管理。
  29. //基本上可以总结为,匿名对象调用属性基本没有什么意义,调用方法有意义。
  30. Car c = new Car();
  31. c.run();
  32. c.num = 4;
  33. new Car().run();
  34. 如果对一个对象进行多个成员调用,必须给这个对象起个名字。
  35.                 */
  36. //需求:汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。
  37.                 Car q = new Car();//建立q类类型变量,栈内存中有个q,但是堆内存有new Car(),已经初始的Car内部的成员变量,q指向new Car()的地址。
  38.                 show(q);// 局部变量没有默认初始化值,当作用范围结束,局部变量在栈内存中的的空间会自动释放。
  39.                 //上面的两条指令用匿名函数表示即为 show(new Car());因为没有对象,new Car()所以只在堆内存中存在,当要调用show()函数时,show中的返回对象c指向了new Car()的内存地址。而且使用完以后show在栈内存中的空间随即被释放示例图4
  40. }
  41.         public static void show(Car c)//建立一个局部函数,show,返回值为汽车类型,因为这个函数的作用就是对汽车进行改装,对象是车。所以show()后面括号内部的为Car c
  42. //若这个c改为q,那么q与上面那条指令中的q是不是同一个呢?答案是不是,
  43. //show(Car c),当q调用此函数时,c对象在堆内存中的地址赋予了q,不论字母是否相同,两者都是两个对象。见示例图5,(重点掌握)
  44.         {
  45.                 c.num = 3;//这个局部变量存在于成员函数show中,存在于栈内存中
  46.                 c.color = "black";//存在于栈内存中
  47.                 c.run();//局部成员函数调用成员函数。
  48.         }
  49. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马