对象属性结构赋值_面向对象初体验

cf57ec974d6bba4d85b8c705592bbfd7.png
  • 5.构造方法

面向对象

  1. 初识面向对象
    1. 面向对象 : 就是一种编程思想
    2. 面向过程 : 也是一种编程思想
    3. 最近几天重点:

基于面向对象的编程思想,不断理解认识,使得语法认知更加清楚,并细致总结每一个语法点,关于面向对象的语法,前期需要非常努力,后期也会持续加强,但学习时不可以疏忽懈怠

  1. 面向对象类和对象的概念理解

生成一辆汽车过程示例

  1. 软件开发面向对象类和对象理解

面向对象和面向过程都是软件开发的一种编程思想,要真正的理解一种编程思想,或者说应用在实际的开发设计中,并不是看几本书,听我说几句就能搞定的事情,需要先了解,在实际开发中应用,这样不断的思考分析、积累,从而达到理解。

举个事例,现在我手上接了一个500W的项目,接下来我需要完成这个项目,现在我有两个选择:第一是自己一人开发;第二是组建团队或者说外包。

第一,自己一个人独立开发。

那么我需要做的事情可能就包括了:需求搜集、分析,原型设计,项目架构设计,编码实现,项目测试,项目实施等等。其中每一件事情都必须亲力亲为,感觉心里倒也踏实,不过这个过程可能是这样:

  1. 哈哈,接了个单高高兴兴敲代码!!
  2. 丫,咋还出bug了呢,纳尼。。。
  3. 不会吧,我都调试3个通宵了。。。
  4. 糟糕,我要崩溃了,。。。
  5. 儿(安息吧!)

70ad72174908322914b168c163c07b79.png

676732bdb23449bee77da043276377ee.png

cf5b1f5e4c7a05026ecb79ebf1fe3c55.png

5c8c0a7d95dc1abc14c998789f09672c.png

57aa490d4bba2b92a61377d6e4ff3d26.png

?当然是数钱啦()

类与对象

  1. 类和对象认识

类和对象 理解 :比如做一个500W的项目 :

  1. 设想我们学生信息需要管理的信息
    1. 姓名
    2. 年龄
    3. 电话
    4. .......

现在模拟一种场景:现实的世界和虚拟的世界:理解类和对象

  1. 比如现实生活中:管理学生信息,设想计算机系统如何管理学生信息

①设计纸质模板,用于填写学生信息的模板

②复制模板:填写具体的学生信息

  1. 设想计算机系统应该怎么做

①应该设计一个模板,用于填写学生信息的模板

②复制模板:填写具体的学生信息

eb4fe6df930c445090abde8b62537192.png

现实生活中管理与系统中管理区别

  1. 现实生活中:比如收集学生的情况,如果通过每个人来填写,使用纸质文件保存,不方便,

查找不方便,纸质容丢;( 老鼠 )

  1. 系统中管理:数据安全,不容易丢失,保存方法

系统数据基本设计

  1. 所以需要做一个系统,我们需要做什么事情:模拟现实社会中现象

①先写一个模板--->需要一个类;

②然后录入人的信息--->对象;

系统设计类与对象的认识

  1. 现实生活中

①现实生活中,做一个纸质模板:目标是为了统计某一类事物的数据,录入学生信息模板,主要为了统计学生信息

理解:学生信息纸质模板,没填写任何数据,描述学生这一类事物!是一个类

②现实生活中,复制纸质模板,得到独立的崭新的一份,填写具体的信息,该复制的模板填写了具体的信息,描述了一个具体的信息

理解:学生纸质模板,填写了具体的信息,描述的是一个具体的学生,是一个对象

  1. 虚拟世界中

①需要个模板,一个类,用来描述一类事物

②可以复制该模板,填写具体的信息,用来描述具体的一个事物

  1. 再次强化类和对象的概念

①[类]:就是一个类事物:是不具体的:是类

②[对象]:就是一个具体的学生,是具体的:是对象

  1. 类和对象理解

什么是类?

类 :是指描述一类事物,或者看成是一个分类, 例如人类、车类、星球类、猪 等等

╭︿︿︿╮

{/ o o /}

( (oo) )

︶︶︶

什么是对象?

对象 :是指具体的个体(也叫实例-instance), 例如马云、王石、老郑、马云的迈巴赫、王石的切诺基、

老谭的二八自行车、地球、火星等等。类和对象的关系请看下面的图例:

0477534d6a492e7da0d6268981f63749.png

979bccfdf8fe16e8cdd7a3e59b2e8751.png

类和对象小结

类[模板]---->[复制模板]对象

java语言世界:万事万物皆对象

java语言世界:万事万物皆可分类

  1. Java语言设计思想

希望将现实生活中,对象与对象之间的关系在计算机系统得以体现,从而构建计算机系统,用的对象!

  1. 事物的简单思考
    1. 百度面向对象

https://jingyan.baidu.com/article/066074d6541537c3c21cb0ca.html

  1. 简单事物思考

现实世界中,随处可见的一个事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象所属于的某一类事物都是由哪些部分组成的。

通常都会将对象划分为两个部分,即动态部分【行为】与静态部分[描述]。//.属性

静态部分:顾名思义就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,它包括高矮、胖瘦、性别、年龄等属性。

动态部分:然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分),

  1. 人类通过探讨对象的属性和观察对象的行为了解对象。

静态部分:属性

动态部分【行为】:属性

  1. 如何设计类[从代码的角度]
    1. 如何设计类

①java中的类,就是类!用来描述一类事物,任何事物包含:静态属性,动态属性

java中的类就是用来描述一类事物!

②通过设计类,可以用来描述一类事物

③如何设计:

静态属性[描述]:成员变量[成员字段]

动态属性[行为]:方法

  1. 设计学生类:语法:

class Student{//描述了学生这一类的事物

String name;//静态属性【成员变量 可以不用初始化值】姓名

int age;//静态属性年龄

void eat(){//动态行为:可以完成一定的事情,做一定的功能

}

}

用来描述一类事物的

类规范书写:

  1. 类名首字符大写; Student
  2. 类名必须具有意义;
  3. 必须写注释;

示例 : 设计一个学生类(模板))

129f62888e36f9be662107f0c6c74890.png

参考如上: 设计一个学生类(模板))

class Student{//Student描述类这一类事物,模板

String name; // 姓名

int age; // 年龄

....................................

void eat(){ }

void sleep(){ }

}

  1. 小结

对象的创建

  1. 如何创建对象

暂时: new 类名(); --------->相当于学籍卡模板复印件

注意: 复印件(对象)暂时没有填写具体的学生信息

  1. 给对象字段赋值

如何操作:

  1. 注:复制一份模板相当于创建了一个对象:给该对象描述静态属性的字段赋值:用于描述一个具体的学生对象

class _01Test{

//创建对象:复制模板----->复制的一份都是独立的一份

public static void main(String[] args) {

//暂时记住: new 类名();复制了一份,创建了一个对象:本质 new Student();这就是一个对象

new Student();

//给复印件的静态属性赋值int[] arr = {}; arr.length;访问引用类型数据数组的,length属性

new Student().name = "渣渣文";

//将赋值的静态属性取出来用

System.out.println( new Student().name );

}

  1. 定义一个变量存储数组的对象的地址,然后使用变量等同于使用对象
    1. 使用int 类型变量 可以接收Student对象吗?
    2. 使用String类型变量 来接收Student对象可以嘛?
      1. 类引用数据类型,想到数组引用存储空间地址根据错误提示,需要Student类型变量 来接收

//数组,引用数据类型,通过变量持有地址值,对该引用类型的数组进行引用...

Student stu = new Student();

System.out.println(stu);

注意:

Student是类型吗?

以前学习的类型 :基本类型/引用类型,其中引用类型里面包含类,接口 数组,所有说 类是一种类型,这里的Student也一种类型,它是引用类型;

  1. 如何给 学生对象 赋值 和取值?

stu.name = "小弟弟";

System.out.println(stu.name);

Student stu2 = new Student();

stu2.name = "小妹妹";

System.out.println(stu2.name);

/*

①没有static修饰:对象名.方法名+参数列表

②有static修饰:类名.方法名+参数列表

③在同一个类中:方法名+参数列表

*/

stu2.eat();

  1. 堆栈内存图分析代码(重点):
    1. 引用类型数据:堆栈内存图分析

下面使用堆栈内存图来解释一下上面代码的执行流程和属性值存储。从下图中可以看到:

  1. 每创建一个对象都会在堆内存中开辟一块空间,并且这块空间中具有和类(模板)中一样的字段。

类相当于模板在堆中复制了一份,堆中的对象与类长的一模一样

  1. 每一个对象都被栈中的一个变量所指向,所以操作栈中的变量(s)就如同操作堆中的对象。
  2. s.name = "小明";其实是把字符串值赋值给s变量指向的堆中的name字段上的,而不是设置给类的,所以我们在分析代码的时候,看到new Student()对象应该立马想到在堆中有一个对象。
  1. 总结:

构造方法(Constructor)

  1. 构造方法引入

new Student(); 创建一个学生类的对象 [ 暂时记忆成 new 类名() ]

注:上面代码本质是new 就是在调用Student中的无参数的构造方法!

  1. 什么是构造方法
    1. 什么是构造方法?
  1. 构造方法的结构和普通方法类似,但是和普通方法完全不同两个代码块;
  2. 构造方法也是方法,意味着使用了构造方法,方法会执行,也能完成功能
  3. 构造方法就是一个代码块【就是一个结构 ,构造方法和 字段方法一样都是一个类中的成员之一】
  4. 构造方法也该存在于类的结构体中
  1. 构造方法写法:
  1. 构造方法的名字和类名一致【包括大小写完全一致】
  2. 没有返回值类型
  3. 构造方法内部不需要返回任何的数据
  4. 其他的和普通方法类型 ,可以有修饰(public),可以有形参列表,可以有方法体

注意:

new Student() 这个整体既是一个Student对象,又是调用的Student的无参数构造方法

  1. 构造方法特点
    1. 类中构造方法特点:
  1. 每一个类中都至少有一个构造方法;
  2. 如果没有看到(显示的),那么存在一个隐式的无参数的构造方法;
  3. 如果一个类中有显示的构造方法,那么隐式的就不存在了;
  1. 验证new Student()就是在调用构造方法?
  1. 把隐式的构造方法显示写出来
  2. 在这个构造方法里面随便写点打印代码
  3. 执行new Student(),。。。。
    1. 构造方法的作用
      1. 通过调用构造方法可以创建对象
      2. 在创建对象的同时给对象的字段赋值【通过构造方法来完成】
    1. 构造方法注意事项
      1. 明确:
        1. 构造方法(Constructor)和普通方法(Method)是不一样的代码块,只是结构有些类似而已;
        2. 构造方法也是方法,方法执行,可以写功能代码,执行构造方法能完成一定的功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值