优秀的编程知识分享平台

网站首页 > 技术文章 正文

带你深入了解Java学习中的“对象”

nanyue 2024-09-18 21:47:02 技术文章 4 ℃

今天我们来深入了解面向对象中的—对象

首先现实世界的对象就是存在的一个实体,就像我们人,电脑,桌子等等,这些都是对象。

对象分为成静与动两个部分

静的部分称之为属性:

像身高,体重,性别,三围什么的!

(就是属性面板里的血量,物抗,魔抗,攻击力什么的!)

动的部分称之为行为:

走,说话,吃饭等等!

(就是操作面板里的移动,释放技能什么的!)

如果你说你还是看不懂,

来我们加下好友

带你装逼,带你飞带你深入了解面向对象!

那么类呢?

是对具有共性事物的抽象描述!

就像我们总说我们是人类

人类就是一个抽象的概念定义,

这类人共有的属性和行为。

我们就是人类这个类中的一个实例化的实体

那么,现在我们就来创建一个Person类吧!

现在我们定义一个Person类

一个标准的吃货

他有两个属性

名字( String 类型)和年龄( int 型)

一个行为 :( eat )

这张图就是展示一下我们的包结构,

以及代码的调用和运行结果。

(让我们的小张教主变成吃货了!)

储存

那么现在娜姐就带领小伙伴来了解

对象是如何存储的。

首先,我们要先在脑海中建立一个堆和栈的概念

两个都是用来存储信息的

但是这个堆的空间要比我们的栈的空间大得多

(记得之前听过一个段子,栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈!)

当我们声明一个对象:

Person p1;

的时候我们就在我们的栈中开辟一个空间,

叫p1没有初始化所以里面是空的

之后我们要对p1进行初始化

p1=new person;

new 创建实例在堆中开辟一块空间

把Person类中的属性和方法统统初始化

并把这块空间的地址

存在我们的p1开辟的栈中。

对象地址已经给你咯

这样我们就可以根据我们的p1地址来找到我们堆中的空间进行设置。

p1.age =18;

我们可以这样理解

声明对象:我需要一个冰箱。

(在房间里找个可以放冰箱的地方)

实例化对象:我已经买好了

(冰箱位址位址确定了,里面是空的)

给对像的属性赋值:放东西呀!

(在冰箱的里面放西瓜、冰淇淋等等)

(晚上吃西瓜真舒服!)

怎么样这个例子虽然不是恰当

但是这是我能想到最好的了!

下面是面向对象程序设计的特点!

封装

对外隐藏对象内部具体实现

开放出若干个可以操作的入口访问数据。

封装即对要操作的实体进行隐藏

使原始功能对外不可见

通过其他方法间接的操作真实的实体。

就好像我们在打游戏的时候

只要通过鼠标,键盘实现一些功能就好了。

(像移动,释放技能什么的!)

至于是如何实现的我们无需知道

就算知道实现原理对与我们玩游戏也没什么用。

采用这种封装的思想就可以提高我们的程序的可维护性。

那么如何控制我们的内容隐藏起来了呢?

就是下面的关键字了

作用域

当前类

同一package

子孙类

其他package

public

protected

×

省略不写

×

×

private

×

×

×

看到没有上面这个表就是关于权限的关键字

那我们就可以把不想别人动的属性私有化以上面的代码为例!

像这样私有化外面就用不了。

然后我们提供set(设置) get(获取)方法

我们就可以通过这样的方式来设置属性,获取属性。

有些东西我不想你用,就可以不提供方法

就是这么任性!

我们定义的对象属性是以成员变量的形式存在

我们定义的对象方法(行为)以成员方法存在

除去这两点还有一种方法

类的构造方法

功能主要是完成对象的初始化。

当类实例化一个对象时会自动调用构造方法

注意:

1.构造方法是特殊的成员方法,它与类同名,在对象实例化时由虚拟机自动调用;

2.它没有返回值类型,也不能有返回值;

3.每个对象在生成时都必须执行构造方法,而且只能执行一次;

4.如果构造方法调用失败,那么对象也无法创建;

5.在没有定义构造方法的情况下,类会自动产生一个无参数的默认构造方法,这个默认的构造方法什么都不做

7.一旦显式地定义了构造方法,默认构造方法自动消失;

方法重载

方法重载是让类以统一的方式

处理不同类型数据的一种手段

Java构造方法的重载

就是在类中可以创建多个构造方法

但具有不同的参数列表

(这一点和普通方法的重载是一样的)

调用时通过传递参数的不同来决定具体使用哪个构造方法

举个例子

我们定义了一个方法吃饭

然后我们会根据上的不同菜品(参数)

选择不同的方法

西餐用刀

喝汤用勺

吃面用筷子

...

当然你要是让我用代码表示出来

我是拒绝的只能给你一个原理!

这里简单的举一个加法的方法重载

方法名一样都是 add

但是输入的参数不同

我们调用的方法就不一样

在外面看来我们就是只用了add方法

这就是方法重载

最近发表
标签列表