精华内容
下载资源
问答
  • 什么是类 ? 什么对象 ? 类和对象有什么关系 ?
    万次阅读
    2018-07-23 20:57:28

    面向对象(Object Oriented,OO)。

    面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。核心特性包括:类,对象,方法,封装,继承和多态。

    对象和类解释:

     

    1.1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。   

    1.2)对象是一种具体的概念。

    2.1)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 

    2.2) 类是一种抽象的概念。

     

    对象和类的关系:

    类与对象的关系就如模具和铸件的关系,类的实力化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。

    解释的通俗一点就是,人是一种类,而具体的某一个人就是一个对象,每一个对象都符合这个类型的标准。

    一个类的所有对象都有相同的属性(都是人类),但有不同的属性值(名字、身高不一样等),不同的类的属性不完全相同。

     

    更多相关内容
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去...

    面向对象(OOP)概述

    从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去面对。面试官: go out ! now!

    img

    滚回来的我赶紧看看什么是OOP,Object Oriented Programming,原来就是面向对象的编程啊,还有OOD(面向对象的设计),OOA(面向对象的分析)。那什么是面向对象呢?要想了解这个问题我们要先了解面向过程,这样对比我们就好理解了。

    很早很早以前的编程是面向过程的,比如实现一个算术运算1+1 = 2,通过这个简单的算法就可以解决问题。但是随着时代的进步,人们不满足现有的算法了,因为问题越来越复杂,不是1+1那么单纯了,比如一个班级的学生的数据分析,这样就有了对象这个概念,一切事物皆对象。将现实的事物抽象出来,注意抽象这个词是重点啊,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。这是一次飞跃性的进步。

    img

    举个最简单点的例子来区分面向过程和面向对象

    有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

    1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

    2、去饭店,张开嘴:老板!来一份鱼香肉丝!

    看出来区别了吗?1是面向过程,2是面向对象。

    面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性!

    面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

    面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

    面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。

    面向过程和面向对象的区别

    面向过程

    优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
    缺点:不易维护、不易复用、不易扩展

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
    缺点:性能比面向过程差

    面向对象三大特性五大原则

    img

    面向对象的三大特性

    1、封装
    隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

    2、继承
    提高代码复用性;继承是多态的前提。

    3、多态
    父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

    五大基本原则

    • 单一职责原则SRP(Single Responsibility Principle)
      类的功能要单一,不能包罗万象,跟杂货铺似的。

    • 开放封闭原则OCP(Open-Close Principle)
      一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。

    • 里式替换原则LSP(the Liskov Substitution Principle LSP)
      子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~

    • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。

    • 接口分离原则ISP(the Interface Segregation Principle ISP)
      设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

    总结

    • 抽象会使复杂的问题更加简单化。
    • 从以前面向过程的执行者,变成了张张嘴的指挥者。
    • 面向对象更符合人类的思维,面向过程则是机器的思想
    展开全文
  • 对象是需求场景中的名词(如人、事、物)在程序中的表示 JavaScript中,除了string、number、Boolean、null、undefined之外,其他的数据都是对象,如数组、日期甚至函数等; ECMA-262定义: 属性的无序集合,每个...

    对象是需求场景中的名词(如人、事、物)在程序中的表示

    JavaScript中,除了string、number、Boolean、null、undefined之外,其他的数据都是对象,如数组、日期甚至函数等;

    ECMA-262定义:

    属性的无序集合,每个属性存放一个原始值、对象或函数

    对象是无特定顺序的值的数组

    对象是一种特殊的数据类型,可以包含多个成员

    对象的成员分为两种:属性和方法

    属性(Property):

    -封装对象的数据,表示与对象有关的值

    -对象名.属性名

    方法(Method):

    -封装对象的行为,表示对象可以执行的行为或可以完成的功能

    -对象名.方法名

    Object = Property + Method

    JS中的对象类型

    1.内置对象/原生对象:指JavaScript语言本身预定义的对象,在ECMAScript标准定义,由所有的浏览器厂家来提供具体实现,由于标准的统一,故这些对象的浏览器兼容性问题不太大

    String、Number、Boolean Array、Date、RegExp、Math Error Object、Function Global

    2.宿主对象:指JavaScript运行环境(即浏览器)提供的对象,由浏览器厂家自定义提供实现,早期存在较大的兼容性问题,当前其中一些主要的对象已经被大部分浏览器兼容;具体分为如下两大类

    (1)BOM对象:Browser Object Model

    Window、Navigator、Screen、History、Location

    (2)DOM对象:Document Object Model

    Document、Anchor、Area、Base、Body、Button、Canvas、Event、Frame、Frameset、IFrame、Image、Link、Meta、Style、Form、Input Button、Input CheckBox、Input File、Input Hidden、Input Password、Input Radio、Input Reset、Input Submit、Input Text、Option、Select、Textare、Table、TableCell、TableRow

    3.自定义对象:指由用户创建的对象,兼容性问题需要由编写者注意

    创建自定义对象3种:

    (1)对象直接量;由名/值对组成的映射表,名和值之间用冒号分隔,名/值对之间用逗号分隔

    var obj1 = {};var obj2 = {x:0,y:0};var obj3 = {name:‘Mary’,age:18}

    (2)new Object();创建系统对象,创建通用对象,创建自定义对象(自定义构造函数)

    var obj1 = new Array;var obj2 = new Date();

    (3)function 对象模板

    展开全文
  • 在计算机科学中,对象(英语:object),台湾译作物件,是一个存储器地址,其中拥有值,这个地址可能标识符指向此处。对象可以是一个变量,一个数据结构,或是一个函数。是面向对象(Object Oriented)中的术语,...

    在初学面向对象语言的时候,很多书都会有这样的句子–“一切都是对象”。那么对象究竟是什么呢?是不是一切的事物都叫对象?但这里的对象并不是我们日常生活中的对象(事物),C#中我们把一个类的实例叫做对象,这里的对象并非只是具体的事物,它也可以是一种规则、计划或事件。在我看来,对象就是对事物共同特性及行为的抽象及总结。
    下面引用维基百科上对对象的定义:

    在计算机科学中,对象(英语:object),台湾译作物件,是一个存储器地址,其中拥有值,这个地址可能有标识符指向此处。对象可以是一个变量,一个数据结构,或是一个函数。是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。
    在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。

    那么所谓面向对象编程,就是面向类和实例的编程方法吗?这样的理解似乎有些片面。面向对象并不是单纯的面向类和实例编程,更不是面向一切事物(一切都是对象)编程。在编程世界里提到面向对象更多的是指一种设计及编程的思想及开发方式,愚以为如何将问题抽象成对象并编码实现的过程便是面向对象编程,而不是写一个类实现一个实例就是面向对象编程。
    为了防止大家跟我在错误的道路上越走越远,下面同样粘一段维基百科的定义:

    面向对象程序设计(英语:Object-oriented
    programming,缩写:OOP)是种具有对象概念的程序编程范型,同时也是一种程序开发的方法。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象[1][2]。

    面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。

    当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object
    Oriented Design,简称OOD)方面的知识。许多流行的编程语言是面向对象的,它们的风格就是会透由对象来创出实例。

    重要的面向对象编程语言包含Common
    Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 与
    PHP等。

    支持部分或绝大部分面向对象特性(类和实例、封装性、继承、多态)的语言即可称为基于对象的或面向对象的语言。Java跟C#是目前最流行的两门面向对象语言。
    从一开始的面向过程(Procedure Oriented,是一种以过程为中心的编程思想),到之后面向对象逐步成为主流,面向对象语言开始占据历史舞台。一开始面向对象的程序其实并非是面向对象语言写出来的,使用面向过程的语言也可以写出面向对象的程序,只是实现比较曲折,所以后来才会有层出不穷的面向对象语言。相较于面向过程及函数式编程。面向对象语言可以归类为:

    1. 基于对象的程序设计语言;
    2. 面向对象的程序设计语言。

    面向对象编程具有以下优点:

    1. 易维护
      采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

    2. 易扩展
      通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;
      我们可以在标准的模块上(这里所谓的”标准”指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;

    3. 模块化
      封装可以定义对象的属性和方法的访问级别,通过不同的访问修饰符对外暴露安全的接口,防止内部数据在不安全的情况下被修改。这样可以使程序具备更高的模块化程度,方便后期的维护和修改。
      同时,面向对象语言允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;

    4. 方便建模
      虽然面向对象语言中的对象与现实生活中的对象并不是同个概念,但很多时候,往往可以使用现实生活中对象的概念抽象后稍作修改来进行建模,这大大方便了建模的过程。(但直接使用现实中的对象来建模有时会适得其反)。

    以上就是笔者对面向对象的一些理解,欢迎交流。

    展开全文
  • 什么在线程中用 类名::new 创建Runable对象对象的run方法好像没有被执行,线程3和4没有输出内容(PrintThreadName就是输出当前线程名称的) ``` public static void main(String[] args) { new Thread...
  • 对象存储是什么?看过就明白了

    千次阅读 多人点赞 2019-12-12 10:52:15
    对象存储是什么 对象存储,官方的名词解释是:对象存储是基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作对象。 说实话看完这段解释,我的内心是这样的: 这时候如果再继续介绍...
  • 面向对象(Object Oriented,OO)。起初,“面向对象”是指在程序设计中采用封装、继承、多态等设计方法。现在,面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,ObjectOriented Analysis),...
  • 类具有属性,它是对象的状态的抽象,数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,操作名和实现该操作的方法来描述。 2、什么对象? (1)对象是一种具体的概念。 (2)对象对象是...
  • JAVA面向对象什么

    千次阅读 2019-05-12 13:13:09
    面向对象有什么特征? 面向对象?What??? 众所周知 Java是一种面向对象的语言,那么什么是面向对象什么对象(Object)? 对象就是具有某些的特殊属性(成员变量)和行为方式(方法)的实体。 现实生活中的...
  • Java中实例化对象什么意思

    千次阅读 2021-02-22 20:45:53
    Java中什么是实例化 在Java语言中使用new关键字创建/构造对象的过程叫做类的实例化,该过程的本质,会在内存空间的堆区申请一块存储区域,用于记录该对象独有的成员变量信息。 通俗点就是,实例化:使用关键字new来...
  • 在上面的代码中,是使用类A的对象好,还是对象指针比较好呢?很多时候,我们都没有深刻考虑过这两种情况,似乎在一个类中 都可以满足我们的需求。这种问题在stackoverflow上当然回复: t’s very
  • Java什么叫面向对象

    万次阅读 多人点赞 2018-08-15 21:56:17
    世界上loli控,御姐控,女王控,所以句话就叫万物皆可控面向对象也是一样,万物皆对象 对象这个词你可以理解为一个总称,比如男人女人都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象原本的意思是“都叫对象”,...
  • 一 首先接口不能实例化对象这是毋庸置疑的 !!!! 原因:1.实际语义是实例化一个实现该接口的匿名内部类,接口本身是用来抽象的,实例化接口没有意义。 2.实例化实际意义是在jvm的堆中开辟出一块内存空间,比如...
  • 什么是面向对象程序设计

    万次阅读 多人点赞 2019-08-22 11:10:04
    什么对象→3.什么是消息→4.什么是封装→5.什么是多态→6.面向对象的优点: 本文介绍 C++基础概念和知识。如果您想看其他语言(如 java)的语法,本文不涉及。 1.面向对象和面向过程区别 面向过程程序设计:...
  • Car mycar; 上面Car 是我们自己定义的一个类 mycar则先可看作...能够这一作用的是什么呢?——构造函数。所以就了 Car mycar= new Car(); 当我们自己定义了与类同名的参构造函数时,假设参数类型是整型的,...
  • C++中为什么指针,而不直接使用对象

    千次阅读 多人点赞 2019-01-15 14:07:09
    我刚从 Java 转到使用 C++ 进行面向对象开发,我发现一个很让我非常困惑的问题:C++ 中经常出现使用对象指针,而不是直接使用对象本身的代码,比如下面这个例子: C++   1 Object *myObject = ...
  • Python中可迭代对象什么

    万次阅读 多人点赞 2019-06-30 22:59:56
    Python中可迭代对象(Iterable)并...__iter__方法的作用是让对象可以for … in循环遍历,getitem( )方法是让对象可以通过“实例名[index]”的方式访问实例中的元素。老猿认为这两个方法的目的是Python实现一个通用...
  • 在面向对象的编程语言中,类是一个独立的程序单位,它应该一个类名并包括属性说明和服务说明两个主要部分。 什么对象 对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个...
  • 面试 | 什么是面向对象(OOP)?

    万次阅读 多人点赞 2019-03-02 23:51:31
    旁白:这是一个很大的问题,我觉得面试官主要想听到的一定是面向对象给编程带来的好处,也就是说它独有的特点,所以重点应该要抓住封装、继承和多态三大特性来说。这里我回答的思路是:①面向对象思想的由来;②如何...
  • 简单的例子解释什么是面向对象

    千次阅读 多人点赞 2019-01-23 15:51:47
    什么是面向对象OO:可以先看下 https://www.jianshu.com/p/224d8fc4d0f0 提起面向对象,肯定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?可以先在脑子里过一下。 如题,举个栗子吧: ...
  • Node. js 哪些全局对象

    千次阅读 2021-06-02 11:19:26
    一、是什么 在浏览器 JavaScript 中,通常window 是全局对象, 而 Nodejs中的全局对象是 global 在NodeJS里,是不可能在最外层定义一个变量,因为所有的用户代码都是当前模块的,只在当前模块里可用,但可以通过...
  • 这种情况搞不懂,创建对象成功了,是只要把抽象方法给具现化了就能创建吗? ``` abstract class Driver { public abstract void drive(); } public class Test { public static void main(String[] args) ...
  • python可迭代对象概念讲解

    千次阅读 2020-12-05 14:14:15
    python可迭代对象怎么理解什么是可迭代对象?简单的理解是可以for循环的对象,就是可迭代对象。比如:list,字符串,dict,元组,生成器等。具有可迭代的特征。(推荐学习:Python视频教程)自定义可迭代对象(本质)...
  • java中什么是类?什么对象

    万次阅读 多人点赞 2018-06-03 19:29:55
    首先什么对象呢?可谓是万物皆对象对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,一台电脑,一直钢笔,一个人,一辆轿车等等,都是可以成为对象。那么什么是类呢?类是对象的模子,具有相同属性...
  • 抽象类能创建对象吗?

    千次阅读 2020-07-15 00:27:20
    什么是抽象类呢? 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类是不...
  • java中什么是类什么对象

    万次阅读 多人点赞 2017-12-18 11:17:30
    Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中类和对象的概念,那么它们在概念上到底有什么区别呢? 下面以java语言为例解释下什么是类,什么对象? ...
  • 我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道两个地方会导致Java中new出来的对象并不一定分别在所认为的堆上。...
  • 但是若父类对象想转换为子类对象,父类对象一定是子类对象初始化的。   那么父类对象如何子类对象初始化呢? 假设父类为A,子类为B,那么子类初始化代码为: A a=new B() 这就相当于我们父类的句柄...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,483,686
精华内容 2,193,474
关键字:

对象有什么用吗