首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈我对面向对象以及类与对象的理解

笔者曾经带过一个短期培训班教授java入门基础,在最后结束课程的时候,还有很多同学不太理解面向对象的思维以及类与对象的意义。...这几天有空,就想着整理整理自己的思路,谈谈自己对面向对象以及类与对象的理解。...这就是面向对象的思维特点,抽取(抽象)有用的属性和行为(抛弃哪些无需关系的)组织(封装)成一个类。...类的定义就是一个模板,它描述的一类对象的属性与行为。类往往是抽象的、没有实体的。哺乳动物是类的概念,是抽象的,现实中没有哺乳动物这一实体,只有具体的如老虎,狮子等。...对象则是根据所属类模板创造出来的实实在在的事物。在程序中我将这个实实在在的事物称之为实例,我们为它的属性赋上特定的值,让它成为张三或者李四。在内存里来说,对象是表示的就是具体数据。

80930

谈谈我对面向对象以及类与对象的理解

对于刚接触JAVA或者其他面向对象编程语言的朋友们来说,可能一开始都很难理解面向对象的概念以及类和对象的关系。...这几天有空,就想着整理整理自己的思路,谈谈自己对面向对象以及类与对象的理解。...这就是面向对象的思维特点,抽取(抽象)有用的属性和行为(抛弃哪些无需关系的)组织(封装)成一个类。...类的定义就是一个模板,它描述的一类对象的属性与行为。类往往是抽象的、没有实体的。哺乳动物是类的概念,是抽象的,现实中没有哺乳动物这一实体,只有具体的如老虎,狮子等。...对象则是根据所属类模板创造出来的实实在在的事物。在程序中我将这个实实在在的事物称之为实例,我们为它的属性赋上特定的值,让它成为张三或者李四。在内存里来说,对象是表示的就是具体数据。

57320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    理解Python中的类对象、实例对象、属性、方法

    def msg(): # 静态方法,可以没有参数 pass # 类对象: 将具有相似属性和方法的对象总结抽象为类对象,可以定义相似的一些属性和方法,不同的实例对象去引用类对象的属性和方法...如果通过实例对象来引用类属性,相当于实例对象在实例方法中创建了一个和类属性相同的名字,等同于局部变量实例属性,和类属性无关; # 私有类属性: 类外通过类对象引用不能直接更改,只能通过实例方法调用类对象更改...# 类方法: 需要修饰器@classmethod,标示其为类方法,类方法的第一个参数必须为类对象,一般用cls表示,通过cls引用的必须是类属性和类方法。...# 实例对象: 通过类对象创建的实例对象 # 实例属性: 通过方法定义的属性 # 私有实例属性: __开头定义的变量名;只能通过方法调用来更改 公有实例属性: 可以通过实例对象重新定义...# 私有方法: 只能在类内调用,如果类外调用,则需要类内的公有方法调用类内的私有方法,在类外调用这个公有方法,则间接调用了私有方法。

    3.9K30

    如何理解python中的类和对象?

    什么是类和对象 类和对象,在我们的生活中其实是很容易找例子的。类是一种把对象分组归类的方法。比如动物,植物就可以看作是类,而大象,狮子就可以看作一个动物类中的对象;花,草可以看作是植物类中的对象。...在我们的python编程中,也是有类和对象的,比如我们知道的数据类型就可以看做是类,数字类,字符类,列表类,函数类;实际的1,2,3数字就是数字对象了,"abc"等就是字符对象了,这些都是python中提供的对象...除了提供的对象,其实我们也可以自己来创建对象,这里我们就用一个比较好理解的例子来说:假设我们要做一个弹球游戏,这里面有三个不同颜色大小的球和一个球拍。我们就可以创建一个球类 和 一个球拍类。...当然还有很多其它好处,但是如果使用的比较少或者了解的比较少,你可能感觉不到它的一个优势,更多的理解体会还需要再往后的学习中慢慢感悟,等到那一天你觉得代码比较多,要处理的对象比较多,更改代码,添加功能比较麻烦时...如何利用类和对象去编程 前面讲了很多概念性的东西,下面讲讲如果利用类去编程,当然学完后还是需要自己去理解,将其用到自己的实际项目中,这里比较考验你的解决问题能力,如何将实际问题变成程序的问题,和数学中的建模问题很相似

    2.1K31

    Java中的类与对象的理解(详细介绍)

    Java中的类与对象的理解(详细介绍) 博主 默语带您 Go to New World....通过详细的示例和解释,帮助读者更好地理解和掌握Java中类与对象的重要概念。 概述: 在Java编程中,类和对象是核心概念之一。类是对象的蓝图或模板,它定义了对象的属性和行为。...类和对象的概念 在面向对象编程中,类是一种抽象的概念,用于描述具有相似属性和行为的对象的集合。类定义了对象的结构和行为,是对象的模板或蓝图。对象是类的实例,它具有类定义的属性和行为。 ⚽2....创建类 在Java中,我们使用关键字class来创建类。类由属性(也称为成员变量)和方法组成。属性是类的特征,而方法则定义了类的行为。...总结 本篇博客文章介绍了Java中类和对象的概念,包括创建类、创建对象、访问属性和方法。通过深入理解这些概念,您将能够更好地利用Java的面向对象编程特性来构建强大的应用程序。

    21010

    设计模式 - 谈谈我对面向对象的理解

    要学习好设计模式,首先需要深刻理解面向对象,本文将深入浅出地介绍面向对象的编程的思想和我的一些理解。同时这里也表达一下对把这本好书赠予我的韩骏韩老师的感谢。...第二次是学习Java的时候,有个例子是使用不同的打印机调用打印机接口的同一个函数,输出了不同的打印结果,也就是多态,也让我理解了非常久。...回顾我的学习过程,我认为之所以我在学习的过程中频繁卡壳,根本原因是我当时对面向对象这个编程思想一知半解,一直用面向过程的方式去思考问题,解决问题。...为什么我们需要封装呢,比如说,我有一个类用来生成一个人的对象: class People { public int age; public long money; } 如果我们对这个人的类不加以限制...在Java中为了保证子类重写了父类的方法,我们可以在子类的方法前加上@Override来检查。 那么我们怎么理解多态呢?我觉得一种比较好的方式是将子类理解为父类加持有自己独特的东西。

    38140

    深入理解python中的类和对象

    刚开始学习python的时候或者其他的是面向对象的编程语言的时候,难免会对类和对象理解得不太清楚。所以今天和大家分享下python中的类和对象,深入理解下python中的类和对象。...这个就是鸭子类型的定义,在python中,并不关心这个对象是什么类型,只关心他的行为。由行为来推断出该对象所属于的类型。...就比如列表(list)、元组(tuple)、字典(dict)等等,这些类都是可迭代的,所以说他们是可迭代对象。...实例变量就是有self作为引用的存在类中的变量。类变量是所有对象共享的,在类中修改时,其他的对象也会跟着变。...但是需要注意的是,如果是用对象来引用类变量进行修改的话,这里只是新建了和类变量同名的实例变量,并没有修改到。下面用代码解释下。

    63300

    如何理解用户的行为?

    产品经理的核心工作就是研究用户,根据用户需求研发产品。而研究用户的核心是研究用户行为,研究用户行为背后的原理。 什么是用户? 用户不是自然人,而是需求的集合。怎么理解这句话呢?...异质性是指用户是唯一的,世界上没有完全一样的用户。 情境性是指用户的行为受情境的影响,没有情境就没有用户,同一个用户在不同情境下会有不同的反应和行为。...可塑性是指用户是可变的,其偏好和认知会随着外界不同的信息刺激发生变化而演化。 自利性是指用户追求个人利益最大化。 有限理性是指用户追求理性,但由于能力有限,只存在有限理性。 如何理解用户的行为?...最终形成的期望效用会影响人的行为,并根据实际使用体验形成经验,反馈给用户偏好,对其进行修正或强化,形成新的偏好。 理解了用户行为,有什么用? 产品的目的,最终是促进用户的某种行为(使用、交易等)。...理解了用户行为,我们就能更好地促进用户行为。有两种方向: 1. 在做产品设计的时候,就找到那些认同产品偏好和认知的人群。去看他们的场景,去设计适合他们的场景。 2.

    52010

    我对面向对象的6大设计原则的理解

    程序员都知道编程有 3 大类:面向过程、面向对象、面向函数。面向对象是被讨论的最多的,个人认为,这是因为 Java 之类的编程语言有强大的用户基础,本质还是因为比较符合人的直觉。...说到面向对象,大家可能就会很快想到了 23 种设计模式,可只有少部分人会想到面向对象的 6 大原则,所以本文我分享一下我对于 6 大原则的看法。...单一职责原则 (Single Responsibility Principle) 描述:一个类只有一个引起修改的原因。 理解:我们都知道要软件开发要解耦合,减耦合的理想状态就是一个类只负责一个功能。...理解:这其实就是解耦合的的具体体现。举个生动的例子。 我认为接口应该是一种承诺,或者是协议。 甲方给乙方一系列接口,就算给了承诺。...正确的应该是,我依赖于交通工具这个接口或者是抽象类。 那么,我坐飞机、自行车、汽车、火车都满足情况,未来可能还有地铁、轻轨等等,这就是面向未来的编程方式。 也是底层依赖上层,细节依赖抽象的意思。

    48830

    怎么让继承的类直接使用XIB的布局试图

    怎么让继承的类直接使用XIB的布局试图 最近做的一个小工具,一键替换key,就是为了解放双手,不然每次运行测试和正式的版本都要手动的替换key。...自己几乎所有的项目都是用的全代码,但是平时demo和一些小工具还是用上可视化试图和最新语言Swift. 做到是一个mac程序,几个界面基本上的功能按钮都是一样的。就封装了一个类,用上了xib。...但是拖拽一个NSView,继承与我们刚才的自定义试图,运行发现出不来我们XIB界面。 我自己分析了一下原因,虽然我们让XIB的类指向我们自己自定义试图,但是关联不起来试图。...(coder: NSCoder) 这两个方法里面读取Nib里面的试图获取到设置为自定义试图的大小。 最后对于Xib这一块不是很熟悉就没走通,后来经过搜索,解决了我的问题。...: nil) self.view.frame = self.bounds self.addSubview(self.view) } 我有点不理解为什么执行了Bundle.main.loadNibNamed

    1.1K20

    java中匿名对象和匿名类的简单理解

    :创建一个继承自Contents的匿名内部类的对象 但是怀着疑问我又去查了一下匿名类。...经过查阅资料我们总结一下匿名类和匿名对象,之后可能你看作者的代码可能会理解。 一、匿名对象  匿名对象:通俗的来说就是——没有名字的对象!...:new 类名(参数列表); 如果我们想要去调用自己创建的方法或者变量的话直接:new 类名(参数列表).方法名(参数列表); 3.那么我们想要知道匿名对象有什么好处那?    ...return new Scanner(System.in); } } 二、匿名类(匿名内部类) 如果要执行的任务需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单...(这个能够很好地解释我刚开始遇到的问题)         (2)两条规则:                     1)匿名内部类不能是抽象类。

    98651

    关注对象的自我赋值行为

    秘籍酷 · 微店 IT编程入门指导 所谓的自我赋值,指得就是一个对象赋值给自己的简单行为,但这种看起来人畜无害动作,在某些情形下却可能会使得你的代码崩溃。 ?...两个不同的指针 px 和 py 有可能指向同一对象,而基类引用 r 也完全有可能引用了指针 p 所指向的同一对象。...考虑一个储存了一张 Jpeg 图片数据的类: class Image { ... ... private: Jpeg *p; }; 下面是 Image 类的 operator=() 的实现代码...,也就是 new 语句发生了异常,此时因为 原先对象的图像数据 p 已经被删除,因此这个赋值运算将会导致一个尴尬的结局:新的数据尚未被正常赋予,旧的数据已经被匆匆删除。...需要格外注意会发生异常(尤其是堆内存申请的代码)的代码处,是否会导致程序逻辑的不一致性。 保证任何函数在同时操作多个对象时,哪怕有多个对象是同一对象的情况下也能正常执行。

    68320

    【C++】深入理解类与对象:面向对象编程的核心

    与传统的函数编程不同,面向对象编程注重将数据与行为封装在一起,也就是对象包含数据状态,还包含可调用的行为方法。...面向对象编程的特点在于,它具有封装,继承和多态三大特性,封装意味着对象的状态和行为进行封装,使其对外只需要暴露出必要的接口,从而提高了安全性和可维护性;继承是指某个对象可以继承另一个对象的特性,从而快速构建相似属性的对象...;多态是指同一种行为在不同的对象上具有不同的表现形式,即在不同的情境下,同一方法可以被不同的对象进行调用。...在我的这篇文章有关于内存对齐的较详细的讲解:深度刨析自定义类型(结构体、枚举、联合) 8. this指针 在 C++ 中,this 指针是一个隐含的指针,它指向当前对象的地址。...通过实例化,读者应了解到类如何描述对象,以及类的空间大小和内存对齐规则。最后我们深入探讨了this指针的特性及其在成员函数中的应用,结合练习题帮助读者巩固理解。后续我会补上类和对象的其他特点。

    13910

    深入理解select的行为

    内核并不关心这一数组的大小,内核在分配空间时使用的是select的第一个参数(最大的fd)来计算的,具体代码如下: /* max_fds can increase, so grab it once to...bits只和传入的第一参数有关,取传入的参数和该进程支持的最大句柄的最小值。...2.句柄过大的问题 如果一个应用程序通过setrlimit把进程可打开的最大fd(RLIMIT_NOFILE)改成2048,而__FD_SETSIZE是默认的1024。...但超过__FD_SETSIZE 的部分内存是未初始化的,这样内核就会拷贝一个我们不期望的fd_set,未初始化的内存可能是0,可能是1,这就意味着我们监控了我们不希望监控的fd,而这些句柄恰好又都是存在的...这样,fd_set越大,其性能就越低,而且fd_set很大的时候,fd_set在用户态和内核态之间的拷贝也是很耗时的。

    1.9K10

    类的本质-类对象

    类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本,继承层次,以及消息与函数的映射表等 类对象代表类,Class类型,对象方法属于类对象 如果消息的接收者是类名,则类名代表类对象 所有类的实例都由类对象生成...,类对象会把实例的isa的值修改成自己的地址,每个实例的isa都指向该实例的类对象 2.如何获取类对象 通过实例对象 格式:[实例对象 class]; 如: [dog class]; 通过类名获取(...所以为了保证父类的类方法可以在子类中可以被调用,所以子类的元类会继承父类的元类,换而言之,类对象和元类对象有着同样的继承关系。...而本质上,这两个类型信息查询方法是使用对象的isa指针获取对象所属的类(因为类对象也是对象,所以也有isa指针,该指针指向元类,也就是类对象所属的类),然后通过类继承体系中的superclass指针在继承体系中游走...因此,这样查出来的类对象与直接通过class方法所返回的那个类对象不同,class方法所返回类表示发起代理的对象,而非接受代理的对象。

    9.3K50

    几行代码立即理解js的对象,类,原型等概念

    很多人觉得js的类和对象及原型这个概念特别难理解,特别是习惯java,php,C#等高级语言编程的同学们。 无意中找到了下面一组代码,貌似一下子理解了js中的原型,类,对象等概念。...(){ alert("我的名字是"+this.name); } //测试 var p1=new People("Windking"); p1.Introduce(); People.Run...(); p1.IntroduceChinese(); 1、对象方法理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法 2、类方法,不需要通过生成实例就可以使用的方法 3、原型方法主要是用来对...1、对象方法包括构造函数中的方法以及构造函数原型上面的方法; 2、类方法,其实这里的类就是一个函数,在js中由于函数也是一个对象,所以可以为函数添加属性以及方法,这种方法在node中用的比较多; 3...原来原型方法就是事后定义类,所有类的实例都可以调用原型方法 而定类方法 ,就好比定义静态类的静态方法 ,只能用静态类的方式调用。

    83320

    我是如何理解Java抽象类和接口的?

    不卖关子,我个人对这两个的理解: 类是具体实例的抽象,比如一个json字符串的抽象;而抽象类就是类的抽象;接口就是抽象类的抽象,接口更像是一种协议 听我慢慢道来~ 吐槽 首先,我必须吐槽一下这种面试,我认为面试官凡事问出这种类似...那么,如果我来面试别人,我会问:请你说说你怎么理解抽象类和接口;如果要你向你外婆解释进程和线程的区别,你会怎么解释?...我觉得这可以考验面试者对问题的理解程度,我想微软的面试题(你如何向你奶奶解释Excel)一样,考验一个人对某一事物的理解程度(虽然,至今我还不能很好的想明白这个问题 -。...这样就有各种汽车了,奔驰牌的,宝马牌的,丰田牌的… 接口就是对抽象类的抽象 这只是我个人的理解。 在我们日常生活中可以看到各种“接口”,电源插座就是一种。...其实程序中也一样,比如所有的交通工具可以抽象为一个接口Drivable(可能由于经验原因,我考虑的不是很完善),表示实现这个接口的类创建的对象(比如:汽车,飞机,轮船等等)都是可以驾驶的 public

    801100

    我所理解的Remoting (2) :远程对象的生命周期管理

    在上一篇文章中([原创]我所理解的Remoting(2):远程对象生命周期的管理—Part I ),我简要的讲述了CLR的垃圾回收机制和Remoting 基于Lease的对象生命周期的管理。...在文章的开始,我将以我的理解详细地讲述Remoting中两个重要的概念——Lease和Sponsorship。然后我通过一个Sample,为大家演示如何以不同的方法延长远程对象的生命周期。...从另一个角度讲,如果想让一个对象存活,或者你试图让一个对象具有更长的生命周期,那么不就必须使它被一个根直接或者间接引用——比如你可以使用一个全局变量引用它,那么在这个全局变量的生命周期内,这个对象就会一直存活...ILease的类的对象。...ISponsor Interface的类对象。该接口只有一个成员方法:Renewal。还有一点需要特别说明的是,Spnosor是被设计来被处于Server端的Lease Manager调用的。

    82080
    领券