java获取object对象中的值_Object-oriented programming

a133ca6e22510c9c280902b0be36edc0.png
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data, in the form of fields, and code, in the form of methods. OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of classes, which also determine their types. -- Wikipedia

面向对象编程(OOP)是Java最大的一个特性,其本质是通过抽象思维来建立模型。相比于直接操作内存C语言,Java牺牲了一定的运行效率来换取更清晰的结构和较低的维护成本。

OOP的概念是这门课的基础,也是Java语言的基石。

0f5f9348e19c385abe057eadc87fd684.png
《Java编程思想》的第一章也是对象导论。

在开始看代码之前,同学们首先应该清楚理解什么是OOP。这一节会讲class,object,field,constructos,method等AP考纲内的概念。为了方便理解,部分概念的介绍并不完全正确。


类(class) 和 对象(object) 是两个非常重要的概念。Class描述的是事物的一个类型,而object是属于某个类型的一个东西。注意class和object在抽象的程度上是完全不同的。举几个例子:

  • <电脑>一词可以看成一个class,因为它描述的是一类物品;而“小狐狸的MacBook”则是一个object,因为它指代的是一个特定的物品。
  • <人类>可以看作一个class,而每个人都是一个object。前者是一个类型,后者是一个个实体。

有了class和object的概念,下面这句话也不难理解:某个object属于某个class。比如“小狐狸的MacBook”属于<电脑>,“小狐狸”属于<人类>。


任何一类事物都有一些共有的特征。人类有身高,体重,性别等;电脑有重量,品牌,大小等。这些特征在这类事物上都存在,例如每一个人都有身高和体重,尽管大家各不相同。

既然class描述一类事物,那由什么来描述这类事物共有的一些特性呢?这就牵出了实例变量(field)。每一个class都可以有一些field。属于这个class的所有object都会将这些field赋值。

假设<人类>class有两个field【身高】和【体重】。属于<人类>的object“小狐狸”会将这两个field赋值。那么就有

  • “小狐狸”的【身高】= 123 cm
  • “小狐狸”的【体重】= 45 kg

同理,<电脑>class有两个field【品牌】和【重量】。

  • “小狐狸的MacBook”的【品牌】= 苹果
  • “小狐狸的MacBook”的【质量】= 1.4 kg

注意class的field是没有具体值的,属于这个class的任何object都有。


有了field的概念,就出现了创造器(constructor)这个神奇的东西。上文中阐明了某个object属于某个class的逻辑,可以逆推出用某个class可以创建一个object

已经有了<人类>class,能不能造一个属于<人类>的object呢?答案是可以的。既然<人类>只有【身高】和【体重】这两个field,直接指定他们的值不就可以造出一个属于<人类>的新object了嘛!

Constructor的功能正是如此。只需传入一些参数,一个class的constructor就能利用这些参数创建一个属于本class的object。譬如:

  • “大狐狸”= <人类>的constructor(500cm,2000kg)
  • 创建了一个<人类>class的新object“大狐狸”

为方便阅读没有按照Java的语法写,但是流程是一样的。


通过class不仅可以创建object,还可以改变已有的object,或是让它们交互。每一个class都有一些method供属于这个class的object使用。使用一个object的method可以输出信息,改变当前的field,也可以跟其他object交流。Method可以看成这个类事物的一些行为。

假设<人类>class可以有method {获取身高}、{增加体重}、{发言}。那么所有属于<人类>的object都可以用这些method。

  • “小狐狸”·{获取身高} = 123 cm
  • “大狐狸”·{增加体重}

Method可以返回一个特定类型的信息,例如{获取身高}method,也可以不返回任何信息。


本节只覆盖了OOP最基础的内容,但这些已经足够同学们开始读简单的代码了。封装性(Encapsulation)、继承性(Inheritance)、和多态性(Polymorphism)、静态和动态类型(static)等知识点以后会讲到。

13e3ea98a4238c7f66821679a114eaa7.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值