> 文档中心 > 深入理解类和对象(1) —— Java SE

深入理解类和对象(1) —— Java SE

目录

1. 理解面向对象和面向过程

2. 类的定义与使用

3. 如何将类进行实例化

4. this引用

5. 对象的构造及初始化

5.1初始化对象

 5.2 构造方法

 5.3 默认初始化

5.4 就地初始化

5.5 总结一下,对于成员的赋值 

6.理解面向对象的三大核心特性之一的“封装性”

6.1 认识封装

6.2 访问修饰符

7.看完本篇这些知识点你明白了几点


Java是面向对象的语言,对象就是面向对象程序设计(OOP)的核心。

本篇主要带领大家理解类和对象,还有对象三大特征之一的封装性

1. 理解面向对象面向过程

既然java是面向对象的语言,那么什么是对象,如何理解对象,我的理解是这样的

对象就是真实世界,实际存在的实体,对象和实体是相互对应的,也就是说每一个实体都是一个对象,这是一个具体的概念。

并且还有这些特点;

对象具有属性和行为,能够有变化的状态,应该具有唯一性,真实世界中所有的实物都可以看做对象。

 明白了什么是对象后,那么面向对象和面向过程又是怎么样的呢,下面看一下这个例子

 面向对象和面向过程都是解决问题的一种方法,没有好坏优劣之分,都有其对应场景

面向对象是基于面向过程的,面向对象能让复杂的问题简单化,我们不需要了解具体的实现过程,只需要指挥对象实现功能


 

2. 类的定义与使用

java语言是面向对象的一门语言,而对象又是现实世界的实体,那么如何把这个对象告诉计算机,让计算机识别出来呢,这里就要引出类这个概念了

因为计算机识别不出对象,那么就要给对象进行抽象,所以类是是具有共同属性和服务的对象的抽象(或集合)。

类的内部包含两个主要部分,属性和行为

下面看一下类的定义格式

class ClassName{      field; // 字段(属性) 或者 成员变量     method; // 行为 或者 成员方法 }

class为定义类的关键字,

ClassName为类的名字,

{}花括号里为类的主体内容,构成主体内容的成员为

属性:是用来描述类的,称为成员属性或成员变量(属性是在类的内部,方法的外部)

方法:是用来说明类具有哪些功能,称为成员方法

下面看一下这个例子

class Car{    //1.字段/属性 成员变量    public String brand;//品牌    public String type;//型号    public double lenght;//长    public double weight;//宽    public double height;//高    public String color;//颜色  //2.行为/方法 成员方法    public void DrivingFunction(){//开车 System.out.println("行驶功能");    }    public void BrakeFunction(){//刹车 System.out.println("刹车功能");    }    public void AccelerationFunction(){//加速 System.out.println("加速功能");    }}

 我们在写类时要注意,

类名采用大驼峰定义,

成员变量前统一写public,

一般情况下一个文件中只定义一个类,

public修饰的类必须要和文件名相同

 

 下面再看一个狗类的例子吧

class Dog{    public String name;    public int age;    public String color; public void wag(){ System.out.println("摇尾巴!");    }    public void bark(){ System.out.println("旺旺!");    }}

 

3. 如何将类进行实例化

先明白什么叫类的实例化

定义一个类,就相当于在计算机中定义了一个新的类型。

就和int ,double 相似,int,double也是java语言自带的内置类型。

用类的类型创建对象的过程,称为类的实例化。

这个实例化对象的关键字是new

  如何使用类的成员方法呢                                         如何初始化赋值呢

 

我们还可以实例化好多对象

 

理解了,面向对象,类和类的实例化,我们看一下它们的关系

 

 


 4. this引用

要找到什么叫this引用,先看一个日期的例子

public class Date {    public int year;    public int month;    public int day;    public void setDate(int y,int m,int d){ year = y; month = m; day = d;    }    public void printDate(){ System.out.println(year+" "+month+" "+day);    }public static void main(String[] args) { Date data1 = new Date(); data1.setDate(2021,5,21); data1.printDate(); Date data2 = new Date(); data2.setDate(2022,5,21); data2.printDate(); Date data3 = new Date(); data3.setDate(2023,5,21); data3.printDate();}}

 我们通过main方法创建3个对象,然后通过Date类中的成员方法对对象进行初始化赋值和打印。

下面我们考虑两个问题

1,形参名和成员名如果相同会发生什么

  

那么这个问题怎么解决?

这就要用到this引用了 

2.三个对象都在调用setDate和printDate函数,这两个函数是如何知道打印的是哪个对象的数据呢?

方法只有一个,三个对象都在调用这两个函数,那么这个两个函数是怎么知道谁在调用它的,它是怎么区别对象的

很简单,就是点号前面的这个,点号前面是谁就是谁在调用

 所以this引用代表是什么意思

不用this,有些情况下可能不会报错,

但用this,一定不会报错,所以以后在成员方法中就使用this吧

在成员方法中,this只能引用当前对象,不能再引用其他对象


 

5. 对象的构造及初始化

5.1初始化对象

这个就叫初始化对象,很简单,需要调用之前写的SetDate方法才可以将具体的日期设置到对象中

 现在我们考虑两个问题
1.局部变量必须要初始化化才能使用,为什么字段声明后没有值还可以使用

前面已经说过了,这是因为有一个默认值

2.每次对象创建好后调用SetDate方法设置具体日期,很麻烦,有什么比较简单的方法 

有,请看下文

 5.2 构造方法

构造方法:方法的方法名和类名是一样的,这个方法很特殊,没有返回值,并且在整个对象的生命周期内只调用一次 

 

1.我们使用IDEA,以后写构造方法,不用一个一个写,可以这样做

2.在构造方法中,可以通过this调用其他构造方法,带使代码更简单 

 

 this使用:

1.this.属性 ---》访问当前对象的属性

2.this()-----》调用当前对象的构造方法

     (1)必须放到构造方法中去

     (2)必须放在当前的构造方法第一行

     (3)调用不能形成环的调用

3.this.func();    调用当前对象的成员方法

 5.3 默认初始化

 前面已经说过了,成员变量没有初始化,就会给一个默认值

下面来看一下对应类型的默认值

数据类型 默认值
byte 0
char

'\u0000'

short 0
int 0
long 0L
boolean false
float 0.0f
double 0.0
reference null

   

5.4 就地初始化

 就地初始化理解起来很简单,在声明成员变量时,就直接给出了初始值。

public class Date {    public int year = 2022;    public int month = 5;    public int day = 8;    public Date(){}    public void printDate(){ System.out.println(year+" "+month+" "+day);    }public static void main(String[] args) { Date date1 = new Date(); date1.printDate();}}

5.5 总结一下,对于成员的赋值 

1.定义字段的时候,同时初始化,这种叫就地初始化

2.不初始化,那就是默认初始化,0

3.在类外,通过对象的引用 直接赋值

比如  

4.通过构造方法直接初始化

5.通过提供get和set


 

6.理解面向对象的三大核心特性之一的“封装性”

(OOP语言)面向对象的三大核心特性:封装  继承   多态    

6.1 认识封装

简单的一句话就是套壳屏蔽细节。

比如说一部手机,里面有电池,芯片,主板,摄像头,屏幕,等等电子器件。

对于我们用户来说,会开关机,调音量,会操作使用接打电话等作用就可以了,

不需要考虑内部的线路是怎么样的,电子器件是什么型号的,这些都不用管。

所以手机厂商会用外壳把里面的电子器件包裹封装起来,让用户使用更方便,就是这一种思想

和我们的在面向对象的核心特性之一 的封装相似。

将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互

6.2 访问修饰符

在java中主要通过类和访问权限来实现封装:

类可以将数据和封装数据的方法结合在一起,

而访问权限用来控制方法或者字段能否直接在类外使用 


7.看完本篇这些知识点你明白了几点

1.如何创建类:通过class

2,字段,成员变量| 方法 成员方法

3.如何创建对象:通过new关键字进行实例化对象   Dog dog = new Dog();

4.通过对象的引用dog.属性   dog.方法

5.实例化对象其实调用的是构造方法。 多个构造方法-》重载

6.this三种使用

7.成员赋值的几种方法 就地初始化 默认初始化 引用直接赋值 构造方法初始化 get和set

8.认识面向对象三大核心特性之一的封装性

9.认识四种访问修饰符之三

 


KTV音响网