第三节 面向对象进阶

一、封装(一般是private)

1)概述:

            封装的意义:保护或防止 代码/数据 被无意中 破坏/修改

            保护成员属性,不让类以外的程序直接访问或修改

2)封装原则:

            隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别

在开发中,为了避免逻辑错误(比如:年龄为-100),建议对所有属性进行封装,并提供setter和getter方法进行设置和获取操作

第三节 面向对象进阶

第三节 面向对象进阶

二、this

在Java基础中,this关键字是最重要的概念,使用它可以完成以下操作:

  1. 调用类中的属性
  2. 调用类中的方法或构造方法

在一个构造方法中,调用另一个构造方法时,调用的代码必须写在当前构造方法的第一行

  1. 表示当前对象

注意:小心互相调用导致的死循环 (A中调用BB中调用CC中调用A)

第三节 面向对象进阶

第三节 面向对象进阶

第三节 面向对象进阶

三、static

1)概述:

            static表示”静态”的意思,可以用来修饰成员变量和成员方法(后续还会学习 静态代码块 和 静态内部类)。

            static的主要作用在于创建独立于具体对象的域变量或者方法(什么是域变量?)

简单理解:

            被static关键字修饰的方法或者变量不需要依赖于对象进行访问,只要类被加载到内存(早于对象的创建,只有加载后才能创建对象)了,就可以通过类名去进行访问。

            并且不会因为对象的多次创建,而在内存中建立多份数据

第三节 面向对象进阶

第三节 面向对象进阶

第三节 面向对象进阶

2)重点:

            1. 静态成员 在类加载时加载并初始化

            2. 无论一个类存在多少个对象,静态的属性,永远在内存中只有一份(可以理解为所有对象公用)

            3. 在访问时:静态不能访问非静态,非静态可以访问静态!(因为静态可能会早于非静态被使用,但是非静态可以使用时,说明对象已经存在,则可以访问静态资源

第三节 面向对象进阶

第三节 面向对象进阶

第三节 面向对象进阶

四、包

1)概述

            1. 把功能相似或相关的类或接口,组织在同一个包中,方便类的查找和使用

            2. 包如同文件夹,不同包中,类的名字可以相同。当同时访问不同包中的相同名称的类时,应加上包名称加以区分。因此,包可以避免名字冲突。

            3. 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

2)使用规则

            1. 包中,java文件的定义:

                        .java文件的首部,必须编写类属于哪个包,格式:

                                    不建议使用默认包(default package),有些操作用不了

第三节 面向对象进阶

            2. 包名的定义 :

                        通常由多个单词组成,所有单词小写,单词与单词之间用“.”隔开,一般命名为“com.公司名.项目名.模块名…”

            (规范来源:互联网中的域名不会重复)                       

3)import关键字

格式:import 包名.类名;

第三节 面向对象进阶

4)注意事项

第三节 面向对象进阶

五、权限修饰符

使用权限修饰符,相当于给资源添加访问限制。

封装(private)是权限修饰符中的一种。(用的多,因为封装的更极致,更合理)

子类涉及继承问题。

public用的也多,便于跨包操作

第三节 面向对象进阶

六、代码块

1)普通代码块(存储代码的区域,比如{})

            顺序执行的流程中的代码块,作用:分区

2)构造代码块

            类中的成员代码块;每次对象创建时执行,执行在构造方法之前

3)静态代码块

            类中使用static修饰的成员代码块;类加载到内存时执行。每次程序启动到关闭,只执行一次的代码块。

4)同步代码块

            在后续多线程技术中学习   

常见面试题:构造方法、构造代码块、静态代码块的执行循序:

            静态代码块  - > 构造代码快 - > 构造方法

第三节 面向对象进阶

第三节 面向对象进阶

执行效果:(静态代码块只会执行一次,类加载时;构造代码快每次对象创建时执行一次)

第三节 面向对象进阶

七、main方法详解

JVM承认的唯一的程序的入口

public static void main(String[] args)

            各参数含义:1. Public:表示公共的内容,可以被所有操作所调用

                                    2. static:表示方法是静态的,可以由类名直接调用。

                                    3. void:没有任何的返回值操作

                                    4. main:系统规定的方法名称,拼错报错(NoSuchMethodError: main)

                                    5. String[] args:字符串数组,接收参数的

所有参数在执行类的时候以空格分隔

Eg:java Demo1 1 2 3 4 5 …

注意:如果要输入的参数带有空格:”hello world”,那么需要””括起来:

Eg:java Demo1 “hello world” “hello jdk” “hello jvm”

第三节 面向对象进阶

第三节 面向对象进阶