唠唠SE的面向对象-01——对象 原

1. 面向对象

对象的概念:

对象(object)代表现实世界中可以明确标识的一个实体。

例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。

每个对象都有自己独特的状态标识和行为对象的属性(attribute),或者状态(state)。

学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。

对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。

可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作。

举个栗子:定义一个汽车类,并生产出汽车,有颜色,轮胎(tyre)个数,有运行(run)的功能。

 对象 = 属性 + 行为

public class Car {
    String color;
    int tyre;
    
    void run() {
        if (tyre < 4) {
            System.out.println("汽车少了轱辘,跑不了。。。");
        }else {
            System.out.println("汽车跑了。。。");
        }
    }
    
    public static void main(String[] args) {
        Car car = new Car();
        car.color = "red";
        car.tyre = 3;
        car.run();
        car.tyre = 4;
        car.run();
    }
}

运行结果:
    汽车少了轱辘,跑不了。。。
    汽车跑了。。。

创建对象

1. 使用new关键词,就像new数组一样

2. 需要给汽车起一个名字,也就是变量名:car

3. 变量都是有类型的,car属于什么类型,属于Car类型,叫做类类型

调用对象的属性/方法

直接 对象.*** 就可以调用对应的成员变量/成员方法

如上面的car.run();

成员变量与局部变量,解析变量作用域

1. 成员变量:在整个类内都有效

2. 局部变量:只在其声明的方法内有效

3. 成员变量:它属于对象的属性,它随着对象的创建而创建,随着对象的消失而消失

4. 局部变量:使用完马上释放空间

5. 成员变量属于对象,它存储在堆内存内,堆内的实体,当没有引用指向其时,才垃圾回收清理

6. 局部变量存在栈内存中,当不在使用时,马上就会被释放

7. 成员变量:存储在堆中,如果没有赋初值,它有默认值

8. 局部变量:如果要想使用必须手动初始化

画个图吧 ̄へ ̄  解释下成员变量与局部变量的生命周期:

匿名对象

没有名字的实体,也就是该实体没有对应的变量名引用

1. 当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。

2. 为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。

3. 如果对象要多成员进行多次调用,必须给对象起个名字。不能再使用匿名对象。

4. 匿名对象可以当做实际参数进行传递。

5. 执行完毕后该对象立刻变成垃圾

面向对象的三大特性:封装、继承、多态

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Python入门之面向对象编程(一)面向对象概念及优点

本文分为如下几个部分 首先说明面向对象是什么,然后结合实际例子说明面向对象的如下几个优点 方便函数管理 数据封装 对象操作 最后总结一下面向对象的好处 概念...

3727
来自专栏北京马哥教育

Python正则表达式的七个使用范例

作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。 本文是一系列关于Pyth...

3385
来自专栏司想君

JavaScript闭包,只学这篇就会了

昨天发的文章,排版出现了重大失误。让大家的眼睛受累了。今天再发一遍。 这篇文章使用一些简单的代码例子来解释JavaScript闭包的概念,即使新手也可以轻松参透...

2768
来自专栏阿凯的Excel

Python读书笔记22(函数传递任意数量实参)

连小编都没想到一个小小的函数要分享这么多期~ 当然,主要原因是! 不好意思,放错图了是! 今天和大家分享函数的最后一个部分,虾米呢? 前期有分享过传递一个...

3597
来自专栏人工智能LeadAI

为什么算法容易忘记之插入排序

在学习常用的排序算法时,常有这样的感觉,一看就懂,过眼就忘。原因在于没有将排序的基本思想与代码中各个循环控制变量的意义联系起来进行理解记忆。 插入排序 首先,我...

3525
来自专栏ACM算法日常

字符串展开(递归)- HDU 1274

常用纱线的品种一般不会超过25种,分别可以用小写字母表示不同的纱线,例如:abc表示三根纱线的排列;重复可以用数字和括号表示,例如:2(abc)表示abcabc...

792
来自专栏PHP实战技术

解构赋值,你不能不懂!

14510
来自专栏布尔

想起温习一下JS中的this apply call arguments

很多时候讲到语言入门,大家会认为就是要了解一下语言的语法、数据类型和常用函数。这一课对于所有的计算机专业的毕业生来说都可以自学,然而在最近的实践中(带了两个实习...

21310
来自专栏从流域到海域

《Java程序设计基础》 第6章手记

本章主要内容: - 类的定义 - 成员变量和成员方法 - 类及成员的修饰符 - 对象的创建与使用 - 成员变量的访问与方法的...

1975
来自专栏Java与Android技术栈

借助Java 8实现柯里化借助Java 8实现柯里化柯里化的好处总结

在函数式编程中,函数的概念跟数学中函数的概念是一样的,类似于“映射”。高阶函数和柯里化是函数式编程的特性。

1132

扫码关注云+社区