Java类和对象

目录

一.类的定义

二.  类的实例化

三. this引用的三种用法

1.this访问成员变量

2. this访问构造方法

什么是构造方法呢

 this可以调用当前对象的其他构造方法

 3. this可以访问当前对象的成员方法

四. 面向对象的封装性 

什么是封装?

五. static的三种用法 

1. static 修饰成员变量

2. static修饰成员方法

3. 静态成员变量的初始化

六. 代码块

1. 普通代码块

 2. 构造代码块

3. 静态代码块


一.类的定义

  class 类名 {

      属性/成员变量;

      

      行为/成员方法;

}

Java类和对象_第1张图片

注意事项:

1. 在java中一个源文件只能有一个 public 类

2. 类的命名规则:使用大驼峰的表示方法(每个单词的首字母都要大写)

3. 类中定义的成员变量都有默认值


二.  类的实例化

通过new关键字创建一个对象的实例

通过 . 来访问对象中的属性和方法

同一个类可以创建多个实例

Java类和对象_第2张图片

 通过上面代码我们创建两个实例person1和person2,通过 . 来访问属性和方法.

接下来我给大家讲一个特殊的情况

 当一个引用 赋值为 null的时候,代表这个引用不指向任何对象

 当我们在引用的时候会发生空指针异常

Java类和对象_第3张图片 向上面这种情况就会发生空指针异常,大家在写的时候一定要细心,防止出现这种情况.


三. this引用的三种用法

1.this访问成员变量

1. this 引用代表的是当前对象的引用,即那个对象调用就是那个对象的引用类型

Java类和对象_第4张图片

2. this是 成员方法 第一个隐藏的参数,编译器会自动传递,编译器会负责将调用成员方法对象的引用传递给该成员方法,this只负责接受

Java类和对象_第5张图片


2. this访问构造方法

什么是构造方法呢

1. 构造方法是一种特殊的成员方法 . 特殊在哪里呢?  我们继续往下看.

2. 名字必须和类名相同 ,没有返回值,在创建对象的时候,有编译器自动调用,并且在整个生命周期内只调用一次(实例化对象的时候)

3. 构造方法有分为两种,有参数的构造方法不带参数的构造方法

4. 有参数的构造方法和不带参数的构造方法 这就发生了重载 (我在后面的文章里有,感兴趣可以看看)

5. 如果没有写任何的构造方法,Java会提供一个默认的不带参数的构造方法,  但是!!! 如果写了构造方法就会调用自己的

Java类和对象_第6张图片


 this可以调用当前对象的其他构造方法

1. 必须放在第一行

2. 只能在构造方法内部使用

情形1: 在不带参数的构造方法中调用带参数的构造方法

Java类和对象_第7张图片

 情形2:在带参数的构造方法中调用不带参数的构造方法

Java类和对象_第8张图片

这里要强调一下,int 类型的成员变量在没有赋初值的情况下默认为 0

                           char类型返回 '\u0000'

                           boolean类型的默认值为false

                           非基本数据类型返回null

                           其它基本数据类型返回对应的值

 情行3: 不能成环

Java类和对象_第9张图片

 3. this可以访问当前对象的成员方法

 this不能调用静态的成员方法和属性

Java类和对象_第10张图片


四. 面向对象的封装性 

三大特性分别为封装性,继承性和多态性(在这里我主要讲一下封装性,其它两个在后面文章里会讲)

什么是封装?

将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,对外只提供一些交互的接口.

要想了解封装就要先了解访问修饰限定符,一共有四个,分别为private,default,protected,public.

Java类和对象_第11张图片

Java类和对象_第12张图片 根据上面代码,name属性和eat方法都已经被封装起来了,使用 private 关键字进行了封装,此时它们的的权限就变小了,只能在当前类中使用.

当我们进行了封装要对一些属性修改的时候,我们可以通过get和set方法来实现,这样就对外提供了接口,提高了代码的复用性

Java类和对象_第13张图片

 


五. static的三种用法 

1. static 修饰成员变量

  1. static 修饰的变量,称为静态变量,有以下几种特性

  2. 不属于某个具体的对象,是类的属性

  3. 可以通过对象访问,也可以通过类名访问(更推荐使用类名访问)

  4.生命周期随类名的创建而创建,随类的卸载而销毁

Java类和对象_第14张图片

 

2. static修饰成员方法

1. 在静态方法内部不能直接调用非静态的成员方法,要依赖对象的引用才能被调用

Java类和对象_第15张图片

2. 在静态方法内部,不能直接使用非静态的数据成员,

    只要是非静态的数据成员,都需要通过对象的引用才能调用 .

    静态方法里面不能使用this

Java类和对象_第16张图片

3. 静态成员变量的初始化

 静态变量的初始化有以下三中常见的方法

1. 直接赋值

2. 默认初始化

3. 通过get 和 set方法进行初始化

Java类和对象_第17张图片 

4. 通过代码块进行赋值

六. 代码块

1. 普通代码块

定义在方法内部的代码块

 2. 构造代码块

构造代码块又叫 非静态代码块 / 实例代码块 放在类的里面,用来初始化非静态的数据成员

构造代码块优先方法被调用

Java类和对象_第18张图片

 

3. 静态代码块

静态代码块用来初始化静态的成员 / 提前准备一些数据

静态代码块只会被执行一次

 

 

 

 

你可能感兴趣的:(java)