类,对象和方法

  • 将同一个方法应用于不同的对象是面向对象程序设计背后的主要理念之一。
  • 类的独特存在就是一个实例,对实例执行的操作称谓方法。在某些情况下,方法可以应用于类的实例或者类本身。
  • 对象是类的独特表示,每个对象都包含一些通常对该对象来说是私有的信息(数据)。方法可以提供访问和改变这些数据的手段。对象使用方法可以影响对象的状态。
  • 实例方法总是可以直接访问他的实例变量的,然而,类方法则不能,因为他只处理本身,并不处理任何类实例。

类方法和实例方法:开头的负号(﹣)通知编译器,该方法是一个实例方法。除此之外只有一种选择,就是正号(﹢),它表示类方法。类方法是对类本身执行某些操作的方法,例如创建类的新实例。实例方法能够对类的实例执行一些操作,例如,设置值,检索值和显示值等。

 

@interface(接口部分): 用于描述类和类的方法,也可以为类声明实例变量。

@inplementation(实现部分): 用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明方法的实际代码。也可以添加实例变量。

返回值:声明新方法时,必须要告诉编译器该方法是否有返回值,如果有返回值,是那种类型的值。要做到这一点需要将返回类型放入开头的负号或正号之后的圆括号之内。如果方法不返回值可以用 void 类型声明。

   

    语法图  →                                ﹣                (void)      setNumerator            :                   (int)            number;

                                                                           ↑                   ↑                       ↑                     ↑                 

                                                   方法类型    返回类型      方法名称       方法有参数      参数类型     参数名称

设值方法与取值方法:

  • 设置实例变量的方法通常总称为设值方法(setter),而用于检索实例变量的方法总称为取值方法(getter)。设值方法和取值方法通常称为访问器(accessor)方法。
  • 设值方法不会返回任何值,因为其主要的目的是将方法参数设为对应的实例变量的值。在这种情况下并不需要返回值。相反,取值方法的目的是获取存储在对象中的实例变量的值,并通过程序返回发送出去。为此,取值方法必须返回实例的值作为 return 的参数。
  • 你不能在类的外部编写方法直接设置或获取实例变量的值,而需要编写设值方法和取值方法来设置或获取实例变量的值,这便是数据封装的原则。

 

时间: 2024-11-25 09:42:47

类,对象和方法的相关文章

C++实现根据类名动态生成类对象

在开发后台服务的过程中,我们常常需要从数据库中取数据,并将数据缓存在本地中,另外,我们的服务还需要有更新数据的能力:包括定时的主动更新以及数据库数据更新时服务收到通知的被动更新. 之前在需要用到以上功能的时候,模仿着组内通用的数据Cache部分的代码来写,十分方便,基本上只需要自己写两个类:一个是取数据并缓存数据的类XXXData,一个是扇出数据的类XXXFetcher. 在需要使用数据的时候,通过: FetcherFactory::getFetcher<XXXFetcher>() 即可获取一

lua类对象

--这里是Lua的类对象实例化方法--声明,这里声明了类名还有属性,并且给出了属性的初始值. LuaClass = {x = 0, y = 0} --这句是重定义元表的索引,就是说有了这句,这个才是一个类. LuaClass.__index = LuaClass --构造体,构造体的名字是随便起的,习惯性改为New() function LuaClass:New(x, y) local self = {}; --初始化self,如果没有这句,那么类所建立的对象改变,其他对象都会改变 setmet

第6章 Java类中的方法

1.如何定义java的方法 什么是方法:方法使用来解决一类问题的代码集合,是一个功能模块在类中定义个方法的方法是: 访问修饰符 返回值类型 方法名(参数列表){ 方法体 } 1.访问修饰符,是限制该方法允许被访问的权限范围,可以是:public,protected,private还可以省略2.返回值,如果有返回值需要在这里说明类型,并用return返回,如果没有返回值,使用void3.方法名,使用标识符命名4.参数列表,传递给方法的参数列表 根据返回值和参数的不同,方法大致上分为一下四类:? 无

10-Objective-C特有语法:Category、类对象、description、SEL、NSLog输出增强

一.    分类-Category 1.        基本用途 OC中如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 1>.继承 2>.分类(Category) 2.        格式 分类的声明 @interface 类名 (分类名称) // 方法声明 @end 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3.        好处 一个庞大的类可以分模块开发,可以由多个人来编写,更有利于团队合作 给系统自带的类添加分类,例如:

(一)Python入门-6面向对象编程:03类对象-类属性-类方法-静态方法

一:类对象 前面讲的类定义格式中,“class 类名:”.实际上,当解释器执行class 语句时, 就会创建一个类对象. [操作] #测试类对象的生成 class Student: pass #空语句 print(type(Student)) print(id(Student)) print(Student) s1 = Student() print(s1) Stu2 = Student s2 = Stu2() print(Stu2) print(s2) 运行结果: <class 'type'>

转载---编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议47~51)

阅读目录 建议47:在equals中使用getClass进行类型判断 建议48:覆写equals方法必须覆写hashCode方法 建议49:推荐覆写toString方法 建议50:使用package-info类为包服务 建议51:不要主动进行垃圾回收 回到顶部 建议47:在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题,这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JavaBean中继承也很多见,代码如下: 1 p

Java面向对象一(封装 继承 多态 类 对象 方法)

1.封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 如下,人这个类封装了很多人的属性和行为: 2.继承:很好的实现了代码的复用,提高了编程效率. 人{ 年龄(属性一) 身高(属性二) 性别(属性三) 做事(行为之一) 走路(行为之二) 说话(行为之三)} 教师{ 年龄(属性一) 身高(属性二) 性别(属性三) 做事(行为之一) 走路(行为之二) 说话(行为之三) 教书(行为之四)} 教师继承了人的属性和行为,额外多出的是教书的行为.所以可以写成 教师 继承了 人这个类 的

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

java类,对象,方法

1,类和对象   在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体.类的数据称为成员变量,类对数据的操作称为成员方法.成员变量反映类的状态和特征,成员方法反映类的行为和能力.类的成员变量和方法统称为类的成员.   对象(Object)是类的实例(instance).对象是动态的,拥有生命周期,都会经历一个从创建.运行到消亡的过程.对象与类的关系就像变量与数据类型一样.   类声明 { 修饰符 } class <Classname> { extends <

类对象可直接访问属性,但未实例化不能调用方法

>>> class MyClass: name = 'FishC' def mufun(self): print('hello Fishc!') >>> MyClass.name#类对象对类的属性进行直接访问 'FishC' >>> MyClass.mufun()#但是类没有实例化,访问其中的方法,则成为不可能. Traceback (most recent call last): File "<pyshell#18>"