搞Java的怎么可能缺对象!——走进Java的“面向对象”——没想到你是这样的对象!

Java是面向对象的语言,具有“封装”、“继承”、“多态三个特性”。

既然是门面向对象的语言,Java中到处“充斥着对象”,就像开后宫似的,这种面向对象的特性是Java的魅力所在,也是我喜欢它的原因(捂脸)。

1. 面向对象在Java中的表现

<1> 内存地址之类的事情

System.out.println("Hi"); 只能定内容地把Hi输出。若用 i="Hi"; System.out.println(i); 将可以使i中的内容输出。

通过改变i的内容可更换输出的内容。i即为变量. 这样的操作即为引用。

对于int, double, float 等原生的基本类型,变量可储存它们的数值,利用 == 判断是否相等。
但是对于一个对象而言,变量是他们的“代号”。内部实现中储存了他们的内存地址。利用==可以判断其内存地址是否一样。你可以认为内存地址就是一种原生的基本类型。

eg:

<2> 赋值操作原来是这样的

上一个例子中的str1和str2本质上储存了两个对象的内存地址,可以把内存地址都看成基本类型。因此,可以用赋值符号 = 为某一变量赋内存地址值。

eg:

<3> 只要有new就会有对象的哦

①纳尼?(ÒωÓױ)!你们竟然是一个对象诶!

划重点:new是创建新对象的标志。有new一定创建新对象,没有new的地方不一定创建新对象。

String是最特殊的类,因为他天生下来就被赋予了一种其他类没有的神秘BUFF——一个String可以通过直接用双引号包括一个合适的数据内容的方式创建。

但这种方式不一定创建新的String对象。比如说这样:

这是因为上面例子中这两个"A"被JVM特殊处理了,为了优化,所以被视为同一对象储存了呢!"A"被放入池中公用,节约资源!

而new一定会创建对象!例如最开始的例子中,str1和str2指向了两个不同的对象。

②我到底有几个对象啊

说到最开始的例子,你说str1和str2的这两句话到底创建了几个对象?
实际上,两个"Rua"是同一个对象,利用这个对象创建了两个不同的String对象,所以一共创建了三个内容都是 Rua 的String对象。

 

2. Java中的类

emmm,没想好怎么写,先空着吧

3. 封装

封装就是要把你封印起来,成为我的对象哦~  (阴险而不失可爱的善意微笑

假如我现在想弄一个学生信息获取,没有封装那就是……

那几万个学生都这样获取,我得弄多少变量,这样多麻烦...........
要知道Java可是一个面向对象的语言呢!我们完全可以通过创建一个Student类的方式来创建学生对象方便管理,这就是封装啦!

<1> getter了解你,setter深入你的里面~

封装类里有两个特殊的方法,分别是getter与setter。

一个private的变量在其他类文件就不能被使用。而setter和getter是public的,getter返回这个变量的内容,setter设置这个变量的内容。也就是说这两个方法是可以被在其他类文件中使用的。
这样你就不可以直接修改一个对象中某一个成员变量的数值了,而必须通过我的getter和setter。

如果你想动我的对象,那就需要经过我的监督,因为我的对象一直是我的东西呢!~

<2> 自然而然,你就是我封装的对象了哦~

基本类型int、double等都有自己的封装类Integer、Double等。除int外其他的基本类型都是名称首字母大写的类为封装类。
Java语法糖给我们带来了遍历——自动封装。