首页 > 其他分享 >学习打卡day07-面向对象

学习打卡day07-面向对象

时间:2023-02-17 21:23:54浏览次数:35  
标签:变量 对象 day07 构造 面向对象 打卡 方法 public name

1,基本知识

面向过程编程: 开发一个一个的方法,有数据要处理了,我们就调方法来处理。强调的是做事情的每一个步骤,逐个步骤完成功能。侧重于步骤

面向对象编程: 开发一个一个的对象来处理数据,把数据交给对象,再调用对象的方法来完成对数据的处理,侧重于对象,让对象来解决这个问题。强调的是通过对象完成功能,强调使用具有某个功能的物件做事情;

:类是一个模板,它描述一类对象的行为和状态。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等

对象:对象是类的一个实例,有状态和行为

2,多个对象在计算机中的执行原理

image

首先编译后的代码都在方法区中,知道正在执行的方法会进入到栈中,所以这里首先main方法入栈,new关键字会在堆中开辟空间,来存储Student对象,并把对象的引用(地址值)返回到栈中,而堆中只存储局部变量,方法依然是引用方法区中的地址,唯有等到调用的时候,才会入栈,执行。这也是为什么栈中存储的是局部变量,而堆中存储的是成员变量。

简单总结: 只有需要马上执行的方法才会入栈。new出来的对象java会在堆中开辟空间存储对象,并把对象的引用返回到栈中。因为上面两个原因,所以方法中的局部变量是存储在栈中,而类中的成员变量存储在堆中。

3,类和对象的一些注意事项

  • 类名建议是大驼峰 即: StudentTest
  • 类中定义的变量叫做成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)
  • 成员变量有默认值,局部变量没有默认值,必须要赋值,否则报错
  • 一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
  • 对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了。
  • 如果某个对象没有一个变量引用它,则该对象无法被操作了,该对象会成为所谓的垃圾对象。
  • 易错点: 因为类是引用类型,就跟前面的数组一样,当多个变量指向一个对象的时候,如果一个改变其值,其他的变量再去访问对应的数据,就是改变后的。原理图同数组。

4,this关键字

this是一个变量,可以用在方法中,来拿到当前的对象。 即表示当前类的对象。

this目前主要的作用;是为了区分局部变量和成员变量。比如:

public class Demo {
    private String name;

    public Demo(String name) {
        this.name = name;
    }
}

那么this是哪来的?这一把它看作在方法中的一个参数,是虚拟机默认的即可

public class Demo {
    
    private String name;

    public Demo(String name/*,Demo this*/) {
        this.name = name;
    }
}

5,构造器

构造器的格式: 其实在上面已经使用,

无参构造器:

public <修饰符> 类名(){

}

有参构造器:

public 类型(参数列表){

​ 使用this关键字进行赋值操作

}

构造器的注意事项:

  • 类在设计时,如果不写构造器,Java是会为类自动生成一个无参构造器的。

  • 一旦定义了有参数构造器,Java就不会帮我们的类自动生成无参构造器了,此时就建议自己手写一个无参数构造器出来了。

构造器的作用:

构造器常用于完成对象初始化(常见的应用场景是完成对象的成员变量的初始化赋值)

6,封装

什么是封装?

就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。

封装的设计规范:

合理隐藏,合理暴露

不让用户直接对成员变量赋值,而对通过一些公开的方法实现,即:隐藏成员变量,暴露公共方法,通过private关键字

7,实体类 — javaBean

就是一种特殊形式的类:

这个类中的成员变量都要私有,并且要对外提供相应的getXxx ,setXxx方法

类中必须要有一个公共的无参的构造器。

8,成员变量和局部变量的区别

区别 成员变量 局部变量
类中的位置不同 类中,方法外 常见于方法中
初始化值不同 有默认值,不需要初始化赋值 没有默认值,使用之前必须完成赋值
内存中的位置不同 堆内存 栈内存
作用域不同 整个对象 在所归属的大括号中
生命周期不同 与对象共存亡 随着方法的调用而生,随着方法的运行结束而亡

9,目标

image

标签:变量,对象,day07,构造,面向对象,打卡,方法,public,name
From: https://www.cnblogs.com/yfs1024/p/17131514.html

相关文章

  • Java面向对象基础
    Java面向对象基础什么是面向对象编程,Java类和对象有什么区别OOP(ObjectOrientedProgramming)编程是利用“类”和“对象”来创建模型实现对真实世界的描述使程序更加......
  • day07
      本周内容:day01:流程控制0:补充(了解)短路运算:偷懒原则,偷懒到哪个位置,就把当前位置的值返回深浅copy1、循环之while循环......
  • Java 面向对象
    一、什么是面向对象面向对象编程:OOP,Object-OrientedProgramming。本质:以类的方式组织代码,以对象的形式组织(封装)数据。抽象三大特性:封装、继承、多态二、类与......
  • 16.Rust的面向对象编程特性
    面向对象编程(Object-OrientedPrograming,OOP)是一种程序建模的方法。一、面向对象语言的特性编程社区对面向对象语言的特性没有一个共识性的结论。但是对Rust来说,面向对......
  • 【技术分享】面向对象开发系列之【为什么要用面向对象】
    开源项目:https://girakoo.com/联系方式:contact@girakoo.com问答为什么要有面向对象开发?面向过程开发的C语言,往往有以下几个问题:不同的开发人员需要使用功能完全相同,......
  • 【技术分享】面向对象开发系列之【封装】
    封装理解封装是面向对象程序开发的基石。程序开发,最核心价值,是数据。程序其实是读取数据,操作数据,保存数据等一系列操作。那么经过良好组织过的数据,将使编程事半功倍。......
  • 面向对象的三大特征
    封装程序设计中追求“高内聚,低耦合”,主要细节由自己操作,不让外部操作;只留少量方法给外部操作;属性私有,get/set:用private关键字设置属性为私有属性,用get来获得这个数据,ge......
  • JS笔记(四):面向对象、异常处理
    镇楼图Pixiv:torino六、JS中的面向对象类(class)博主视为你已拥有相关基础,这里不再赘述相关概念类的语法如下,class在本质上是function,可以说class只是针对构造器的......
  • java-studyDay03-面向对象
    生成Java帮助文档:命令格式:javadoc–d文件夹名–auther–version*.java//格式/***类描述*@author作者名*@versio......
  • 面向对象的方法
    ​ 面向对象编程模式如图所示,在这种模式中,函数和它需要存取的数据封装在称为对象的包中。对象之间的数据访问是间接的,是通过接口进行的。我们可以将对象看做是鸡蛋,蛋黄是数......