封装的概述

一、封装

(一)封装的概述

1、封装:隐藏事物的实现细节,对外提供公开的访问方式

2、好处:

(1)隐藏事物的实现细节

(2)提高了代码的复用性

(3)提高了安全性

3、封装的原则

(1)隐藏事物的属性

(2)隐藏事物的实现细节

(3)对外提供公开的访问方式

(二)private关键字

1、private,含义:私有的;权限修饰符:规定了被修饰的代码在哪里能被访问,在哪里不能被访

2、可以修饰的内容

(1)修饰成员变量

(2)修饰成员方法

(3)修饰构造方法

(4)修饰内部类

3、修饰之后的效果只能在本类中进行访问,本类之外无法访问

4、private关键字注意 private只是封装思想的一种体现形式,封装还可以使用其他修饰符来完成

(三)Get和Set

1、当成员变量私有化之后,外界无法访问,所以需要对外界提供一个公开的访问方式,来获取成

员变量值和设置成员变量的值

2、访问:通过方法来实现

(1)方法外界可以访问

(2)方法和成员变量同属于一个类型,方法能访问自己类型中的私有成员变量

(3)外界访问方法,方法访问私有成员变量,从而达成间接访问

3、一般情况下,都是set进行赋值,get进行获取值

4、一般情况下,书写类的属性都要用private修饰,个别情况根据需求来修改,并且一般情况下每

一个成员变量都有一套set、get方法

(四)this关键字

1、变量的访问原则是:就近原则

2、(1)作用:表示当前类型当前对象的引用

(2)哪个对象来调用this关键字所在的方法,this就指代哪个对象

(3)在set方法中,this该关键字在见名知意的前提下,用于区分哪个是对象的成员变量,剩下的

一个按照就近原则,就是局部变量。所以在set方法中,使用【this.成员变量的变量名】,一定是

成员变量, 没有使用name的变量,就按照就近原则去寻找

(五)构造方法

1、概述:又叫做构造器或者构造函数,Constructor

2、作用:用于给成员变量赋值!在创建对象的过程中,会自动调用构造方法,等对象创建完毕的

时候, 对象中的成员变量就已经通过构造方法赋值成功了

3、定义格式

修饰符 方法名称(参数列表) { 方法体; }

4、定义说明

(1)构造方法没有返回值,连void也没有

(2)方法名称:和所在类型保持一致

(3)构造方法可以有return语句,但是没有什么必要,只是表示方法结束

5、其它说明

(1)构造方法不能手动调用,在创建对象的时候由JVM自动调用

(2)因为一个对象只能被创建一次,所以构造方法针对同一个对象,只能被调用一次

(3)构造方法可以重载

(4)当一个类没有手动提供任何构造方法时,在编译时系统会自动为我们添加一个空参构造

(5)当我们手动添加了一个任何构造的时候,系统就不会在为我们添加任何构造方法

(6)如果构造方法没有修饰符,也是构造方法,只不过是默认权限而已,方法中的内容无关紧要

(六)构造和set区别

1、构造方法可以为多个成员变量赋值,set只能对一个进行赋值

2、构造方法由JVM自动调用,set需要手动调用

3、构造方法针对同一个对象只能调用一次,set方法针对同一个对象可以调用多次

4、构造方法用于给变量赋值,set可以给变量赋值或者修改值

5、构造可以使代码更加简洁,set方法灵活性更高

(七)初始化顺序

1、创建对象的时候,成员变量经历了三个过程

(1)默认初始化

(2)构造方法初始化

(3)显示初始化

2、三者优先级顺序:构造初始化 < 显示初始化 < 默认初始化

二、制作标准类

概述:JavaBean是Java语言编写类的一种标准格式规范,符合JavaBean的类,要求必须是具体和

公共的,并且具有无参构造,提供用来操作成员变量的set、get方法,【有参构造是根据具体的实

际情况进行设计的】

(一)格式 

public class ClassName { //成员变量 //构造方法 //无参构造【必须】 //有参构造【建议】 //成员方法 //set方法 //get方法 }

三、API

1、API:应用程序编程接口

2、接口:用于规定方法名称的规则的集合。定义方法名称、修饰符、返回值类型、参数列表、方

法功能等等

3、实际:应用程序编程接口,也包含了Java中的接口、类、枚举等等

4、学习中,更多侧重于基本的使用,以及一些底层原理,这些内容不需要我们自己去定义,只需

要我们调用

四、Math

1、概述:用于执行基本数学运算的方法

2、两个常量:

(1)E:自然对数的底数:2.718

(2)PI:圆周率,3.1415926

3、构造方法:无

4、常用方法

(1)abs(int a):求绝对值

(2)cbrt(double a):开立方

(3)sqrt(double a):开平方

(4)ceil(double a):向上取整

(5)floor(double a):向下取整

(6)max(int a, int b):求最大值

(7)min(int a, int b):求最小值

(8)random():返回【[0.0,1.0)】之间的随机数

(9)pow(double a, double b):求a的b次方 }

(10)round(double a):四舍五入

五、Arrays

1、此类包含用来操作数组(比如排序和搜索)的各种方法

2、常用方法

(1)binarySearch(int[] a, int key):传入指定数组和要查找的元素,返回元素的索引,如果没有则

返回-1 注意:使用该方法之前必须要进行排序

(2)sort(int[] a):对参数数组进行排序

(3)toString(int[] a):打印数组内容

(4)copyOf(int[] original, int newLength):拷贝数组,返回新数组;传入一个数组,和一个新数

组的长度;如果新长度比原数组长度小就是截取;如果比原数组长度长就是采用默认值填充

(5)equals(int[] a, int[] a2):如果两个指定的 int 型数组彼此相等,则返回 true 。

(6)fill(int[] a, int val):用指定元素替换数组中所有的元素

六、静态

(一)概述

静态:如果所有对象,都具有一个共同的属性值,那么在这个属性上加上一个static,就会让该变

量从原本的对象空间内,改为存储在【方法区的静态区】,从每一个对象都有一份变为所有对象共

享一份

(二)静态变量的特点

1、static,关键字;含义:静态;被他修饰的部分就是静态的

2、静态:不会随着对象的变化而变化

3、加载时机:随着类的加载而加载

4、静态优先于对象存在

5、静态变量被所有当前类型的对象共享

6、代码层面

(1)可以通过对象访问,格式:对象名.静态变量名

(2)可以通过静态访问,格式:类名.静态变量名

(3)静态变量可以通过对象或者类名的方式访问,在不创建对象的时候,也可以进行访问

(三)静态方法

1、概述:就是在方法的声明上加上static

2、静态方法不能访问非静态变量

原因:静态成员随着类的加载而加载优先于对象存在,当静态方法被创建的时候,对象很有可能还

没被创建,非静态变量又是随着对象的创建而创建在堆内存中,所以不能访问

3、静态方法不能访问非静态方法

4、静态方法中不能使用this

原因:this指代当前类型当前对象的引用,当静态方法被创建的时候,对象很有可能还没被创建

5、总结:静态不能访问非静态

6、静态方法的调用

(1)对象名.静态方法名

(2)类名.静态方法名【推荐】

(四)静态变量和非静态变量

1、概念上,所属不同

(1)非静态变量属于对象

(2)静态变量属于类

2、内存空间不同,存储位置不同

(1)非静态变量随着对象存储在堆内存中

(2)静态变量随着类创建在方法区的静态区中

3、内存时间不同,生命周期不同

(1)非静态变量随着对象的创建而创建,随着的对象的消亡而消亡

(2)静态变量随着类的加载而加载,随着类的消亡而消亡

4、访问方式不同

(1)所有的非静态成员都需要通过对象来访问

(2)所有静态方法不仅可以通过对象来访问,也可以通过类名来访问

七、修饰符

1、分类:

(1)访问控制修饰符:public、private、default(默认的)、protected

(2)非访问控制修饰符:final、abstract、static、synchronized

2、权限修饰符,是java中的一些关键字,用于决定代码在哪里可以被访问,在哪里不能访问

3、描述

修饰符本类同一个包中的类子类其他类
public可以可以可以可以
protected可以可以可以×
默认的default可以可以××
private可以×××

八、主方法的解释

1、主方法:public static void main(String[] args) {}

2、public,关键字;权限修饰符;含义:公开的,最高权限 主方法由JVM调用,语言和语言之间

的相互调用,需要使用最高权限

3、static,关键字,含义:静态

主方法由JVM自动调用,设置为静态可以不同创建对象来调用,并且在调用main方法的时候也来

不及创建对象,所以只能用静态的。JVM是C语言编写的,C语言是面向过程的,没有对象,只能

使用静态

4、void,关键字,含义:无返回值类型

主方法由JVM自动调用,JVM是C语言写的,C是面向过程的,并且就算有返回值返回,返回给虚拟机也没有任何意义

5、main,不是关键字;含义:主要的

在JVM中,需要执行某个类的时候,只执行main方法,在JVM的代码中,已经将要访问的方法,

作为程序的入口写死了,我们在起名字的时候,不要写main

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值