小码笔记:面向对象之封装
一、类和对象
- 对象:客观存在的事物皆为对象 万物皆对象
对象:真实存在的实体 - 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
类的重要性:是Java程序的基本组成单位 - 面向过程:强调步骤
- 面向对象:强调对象
1.面向对象四大高级特征
<三大特性就去掉抽象>
- 抽象
- 封装
- 继承
- 多态
2.类
-
类的特点:
- 类是对象的数据类型
- 类是具有相同属性和行为的一组对象的集合
-
类的组成
- 属性(成员变量):指事物的特征
- 行为(成员方法):指事物能执行的操作
-
类和对象的关系
- 类是对象的抽象
- 对象是类的实例化
3.关系图
二、类的定义<面向对象—抽象>
从众多对象中抽取共同特性
1.步骤
- 定义类
- 编写类的成员变量
- 编写类的成员方法
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法
方法1;
方法2;
…
}
2.对象的创建和使用
通常一个类不能直接使用,需要创建一个对象才能使用
步骤:
-
导包 import 包名称.类名称
IDEA自动导包(未自动导包的话 Alt+Enter手动导包)
同包不用导包,java.lang包不用导包 -
创建对象
类名 对象名 = new 类名(); -
使用:
(static 修饰的成员变量、成员方法直接通过类名.变量名、类名.方法名调用)
对象名.成员变量
对象名.成员方法()
3.成员变量和局部变量
三、面向对象—封装
封装:将一些细节信息隐藏起来对外界不可见
java中的体现
- 方法的封装
- private的封装
1.步骤:
- 用private修饰属性的可见性来限制对属性的访问
- 创建赋值和取值方法Getter()、Setter()
- 在赋值和取值语句中,加入this对属性的存取加以限制
- 编写main方法创建对象,调用赋值和取值语句访问属性
2.private关键字
-
private是一个权限修饰符
可以修饰成员(成员变量和成员方法)
作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问 -
外界类无法直接访问private修饰的成员,private对外提供一对Getter()、Setter()方法
3.this关键字
解决局部变量隐藏成员变量
- this修饰的变量用于指代成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
4.构造方法
又叫构造器(constructor)
构造方法是一种特殊的方法,是专门用来创建对象的方法。当我们通过关键字new创建对象时,就是在调用构造方法
-
作用:
- 创建对象
- 完成对对象数据的初始化
-
注意事项:
-
构造方法的创建
没有定义构造方法,系统将给出一个隐式的无参数构造方法
定义了构造方法,系统将不再提供默认的构造方法 -
构造方法的重载
自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法 -
推荐的使用方式
一个全参构造方法,一个无参构造方法
-
-
标准类:
-
成员变量
使用private修饰 -
构造方法
提供一个无参构造方法
提供一个带多个参数的构造方法 -
成员方法
提供每一个成员变量对应的setXxx()/getXxx()
提供一个显示对象信息的show() -
创建对象并为其成员变量赋值的两种方式
无参构造方法创建对象后使用setXxx()赋值
使用带参构造方法直接创建带有属性值的对象
-
5.单例模式
单例模式 一种设计模式(用View类举例),主界面对外只提供一个对象
- 步骤:
-
只提供一个对象,不让外界调用构造方法,private将构造方法私有化
-
声明一个方法自己实例化自己
public static View view = new View(); -
对外提供getInstance()方法
-
外界调用View.getInstance(); 目的:解决外加无法创建对象
- 对外获取对象的方法getInstance():
1.饿汉式
private static View v0= new View();
private View(){ }
public static View getInstance(){
return v0;
}
2.懒汉式
private static View v2 =null;
private View(){ }
public static View getInstance(){
if(v1==null){
v1=new View( }
return v2;
}
6.static关键字
-
使用static修饰的变量,静态变量,叫做类变量,不属于对象自己,而是属于所在的类,在该类所有实例之间是共享的,
只分配一次空间,并初始化在加载中创建空间,如同成类的属性
调用 : 类名.变量名 -
使用static修饰的方法,静态方法,也叫叫做类方法,不属于对象自己,而是属于所在类,作用域类的所有实例对象
调用 : 类名.方法名
没用static的是实例方法,调用时必须创建对象通过对象.方法名调用 -
使用static修饰的方法和变量
在类加载的过程中就存在 加载过程中在JVM中创建方法区的空间,存在方法区的静态区中,非存在对象中 -
静态代码块
static { } 当第一次使用到本类时,该类生命周期内静态代码块执行唯一的一次