Java:类与对象、封装、构造方法

1、面向对象的思想

1)、在解决一个问题时

2)、使用对象解决问题

3)、如果是一步一步的进行解决,就是面向过程,而不是面向对象

特点:

​ 1)、容易思考

​ 2)、简化代码

​ 3)、使用对象,就不是执行者,而是指挥者

2、与面向过程的区别

解决问题时,是自己一步一步完成问题的解决

而面向对象,就是直接使用对象完成问题,更加简单

3、类

1)、面向对象的核心之一

2)、是一类事物的共同特征

3)、写成代码时

public class 类名{
    成员变量//属性
    成员方法//行为
    构造方法//创建对象
}

4、对象

1)、一类事物的具体的一个个体

2)、对象和类

java中先有类,再有其创建的对象

​ 1)、类是抽象的,不可以直接用

​ 2)、对象是具体的,可以直接用

​ 3)、类创建对象

类是模子,而对象是用模子做出的

3)、使用类

格式

类名 对象名 = new 类名();

4)、使用对象

对象名.成员变量名;

对象名.成员方法名();

对象名一定要写;

5、成员变量的默认值

普通变量不赋值不可以使用

成员变量会有其默认值

基本类型:

​ 整数:0;

​ 浮点:0.0;

​ 字符:空格 ‘\u0000’

​ 布尔:false

引用类型:

​ 字符串:null

可以不赋值而直接使用

6、内存图:一个对象的内存图

1)、类是如何创建对象的

类当做模板,类有什么对象就有什么

2)、对象是如何访问成员变量的

通过内存地址,访问成员变量

3)、对象是如何访问成员方法的

将成员方法调入栈里面运行

运行结束,销毁,不在栈里

这里写图片描述

7、内存图:俩个对象的内存图

成员变量不是共享的,成员方法是共享的

成员方法一起使用同一块内存就可以,节省空间,所以是共享的(相同的代码优化),使用方法的标记

每个对象的成员变量就不同的
这里写图片描述

8、内存图:对象作为方法的参数

可以对打印对象的成员变量进行优化

定义一个方法,参数为一个对象

类也是引用类型

可以作为参数

9、成员变量与局部变量的区别

1)、位置不同

​ 成员变量写在类中方法外

​ 局部变量写在方法内

2)、有无默认值

​ 成员变量在创建对象时,系统自动赋值

​ 局部变量,系统不会赋值,必须自己赋值

3)在内存中的位置

​ 成员变量:对象是new出来的,对象在heap中,所以成员变量也在heap中

​ 局部变量:stack是保存变量,运行方法的,跟着方法在stack中

4)、生命周期不同

​ 成员变量:跟着对象

​ 局部变量:跟着方法

10、封装

1)、面向对象的三大特征之一

​ 封装、继承、多态

面向对象的封装是为了数据的安全

​ 1)、private修饰成员变量(私有的)

​ 2)、一个成员变量要配要 设置器/获取器

设置器:在类中定义一个给成员变量赋值的方法(set方法)

public void setxxx(int a){
    要设置的内容;
}

获取器:在类中定义一个访问成员变量的方法,方法内有写return返回值

public int getxxx(){
    返回的内容;
}

在类中用private修饰了成员变量,对象就无法通过.变量名来设置对象的属性

所以使用set方法去设置具体的变量,get来获取

这里写图片描述

11、成员变量为boolean的访问器

booklean表示是否,是一个判断

设置器依然是setxxx();

但访问器是isxxx();

12、封装的优化:this关键字

this是java的一个关键字

是这个对象的意思

用来区别成员变量和局部变量重名

格式:

this.成员变量名

13、封装的优化:构造方法

1)、构造方法,是一个方法

2)、构造就是创建、new

3)、只能用于创建对象,只能由new关键字来调用

3)、格式

public class 类名{
    public 类名(){
    }
}

​ 1)、构造方法的名字必须与类名相同

​ 2)、不能写返回值类型

14、封装的优化:构造方法+重载

无参构造方法

public class 类名{
    public 类名(){
    }
}

有参的构造方法

public class 类名{
    public 类名(参数){
    }
}

​ 1)、是只能用用new调用,用来创建对象

​ 2)、还能给成员变量赋值

开发时基本只用一个全参构造方法,一个无参构造方法

new时,有参构造方法=无参构造方法+set方法

15、构造方法注意事项

1)、自己不定义构造方法,系统会送一个无参的构造方法

2)、自己定义了构造方法,系统就不会送了

3)、构造方法可以重载,项目中一般是写一个无参的,一个全参的

16、标准的JavaBean类

1)、成员变量必须peivate

2)、必须配套get/set方法

3)、构造方法,无参的一个,全参的一个

4)、可以写其他的方法

复习

  • [ ] 能够理解面向对象的思想

    万物皆对象,对象有属性,还有其功能

  • [ ] 能够明确类与对象关系

    类是抽象的,类是一类具有相同属性,相同功能的事物

    对象是具体的,是通过类创建出的,具有类的属性和功能,但是是具体的个体

  • [ ] 能够掌握类的定义格式

  public class 类名{
      属性
      功能
      构造方法//创建对象
  }
  • [ ] 能够掌握创建对象格式,并访问类中的成员
  类名 对象名 = new 类名();
  对象名.属性名 = 赋值;
  对象名.方法名();
  • [ ] 能够完成手机类的练习

  • [ ] 能够理解对象的内存图

    steak 栈:存放运行的方法,运行结束销毁;存放变量;

    heap 堆:存放new出来的东西;对象。。。

    Method Area 方法区:存放class

    通过类创建对象也是引用类型,是引用类型就是通过地址来访问数据

  • [ ] 能够说出成员变量和局部变量的区别

    位置不同:成员变量放在类中,方法之外;局部变量放在方法中。

    默认值不同:成员变量在创建对象时,就会自动赋值;局部变量不会自动赋值

    成员变量跟着对象,局部变量跟着方法

  • [ ] 能够理解private关键字的含义

    私有的private,修饰类中的属性值,封装,安全

    不允许对象直接通过.属性名使用,更加安全

  • [ ] 能够说出this关键字可以解决的问题

    this可以解决成员变量和局部变量重名的问题

  • [ ] 能够理解构造方法的含义

    构造方法的名字与类名相同

    构造方法创建对象,类中没有创建构造方法时,系统会自动给一个,

    但当你创建 了构造方法,则这个无参的构造方法便不会自动创建了

  • [ ] 能够用封装的思想定义一个标准类

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值