学习打卡day07-面向对象

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

posted @ 2023-02-17 21:08  yfs1024  阅读(35)  评论(0)    收藏  举报