java学习笔记22:面向对象之封装

1、面向对象与面向过程 理解

​ 例如:面向过程就是,小明肚子饿了去KFC买了一个汉堡,接着又去麦当劳买了一瓶汽水,最后的结果就是小明吃了汉堡喝了汽水。面向对象就是,在这个过程我们可以把小明看成一个对象,我们都可以把上面的一系列动作看成是小明这个对象的方法,而我们要解决小明饿了的问题我们只需要调用小明的方法就行了,比如去xx、买xx等等。至于说小明怎么实现这些方法的你没有必要知道,你所要知道的就是结果:小明解决了饥饿。这就是面向对象。

2、面向对象的设计

就是管理维护对象的关系

3、特点

封装,继承,多态

4、封装

封装把数据和加工该数据的方法(函数)打包为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些信息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者对象的使用者分开,使用者不必知晓其行为实现的细节,只需要用设计者提供消息来访问该对象

4.1 类和对象的基本概念
  • 类和对象是面向对象的核心概念
  • 类是对一类事物的描述,是抽象的、概念上的定义
  • 对象是实际存在的该类事物的每个个体,也称为实例

类是一个抽象的概念,要利用类的方式解决问题,必须用类创建一个实例化的对象,然后通过对象去访问类的成员变量,去调用类的成员方法来实现程序的功能。一个类可以创建多个类的对象,它们具有相同的属性模式,但可以具有不同的属性值。java程序为每个对象都开辟了内存空间,已保存各自的属性值。

对象(object)是类的实例化后的产物。对象的特征分为静态特征和动态特征。

静态特征是指对象的外观、特质、属性等。动态特征是指对象具有的功能、行为等。

人们将对象的静态特征抽象为属性,用数据来描述,在JAVA语言中称之为成员变量。而将动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在JAVA语言中称之为方法(Method)。

一个对象是由一组属性和一类属性进行的操作(即方法)构成的。

4.2 权限修饰符

public:公共的、protected:受保护的、default:默认的、 private:私有的

publicprotecteddefault(空的)private
同一类中
同一包中(子类与无关类)
不同包的子类
不同包中的无关类

tips:

a.成员变量使用private,隐藏细节

b.构造方法使用public,方便创建对象

c.成员方法使用public,方便调用方法

5、 类的声明与定义
[标识符] class 类名称 {
    //类的成员变量
    //类的方法
}
//标识符可以是public、private、protected或者完全省略

构造方法、属性和方法,是常见的3种成员。各个成员可以互相调用,但是static修饰的成员不能被非static修饰的成员访问。

6、 成员变量与类变量

成员变量:类中定义直接定义的变量

类变量:类中被static修饰的变量

7、 对象的声明与使用
类名 对象名 = new 类名();
对象名称.属性名     //访问属性
对象名称.方法名()   //访问方法
8、 匿名对象

匿名对象是指没有名字的对象。实际上,根据前面的分析,对于对象实例化的操作来讲,对象真正有用的部分在堆内存里面,而栈内存只是保存一个对象引用名称(严格来说是对象在堆内存的地址),所以所谓的匿名对象就是指,只开辟了堆内存空间,而没有栈内存指向的对象。

new 类名();

ps:

1、匿名对象没有被其他对象所引用,即没有栈内存指向
2、因为没有栈内存指向,所以只能使用一次,之后就无法找寻的垃圾对象,会被垃圾回收器收回

9、 对象的比较
  • 利用“==”运算符:用于比较两个对象的内存地址值是否相等
  • 利用equals()方法:用于比较两个对象的内容是否相等
10、对象数组

​ 把类理解为用户自定义的数据类型,它和基本数据类型(int、float等)具有等同的地位。。
通过两个步骤可以用数组来存放对象
​ 1、声明以类为数据类型的数组变量,并用new分配内存空间给数组
​ 2、用new产生新的对象,并分配内存空间给它

11、this关键字
  • this调用本类中的属性,也就是类中的成员变量;
  • this调用本类中的其他方法;
  • this调用本类中的其他构造方法,调用时要放在构造方法的首行
12、static关键字
  • 静态中不用this,因为还没有对象,静态只能访问静态

  • 被jvm调用,不需要对象

  • 程序中如果用static定义属性的话,则此属性成为静态属性

13、final关键字

final关键字用于修饰不可改变的内容

final:不可改变。可以用于修饰类、方法和变量

  • 类:被修饰的类不能被继承
final class 类名{
}
  • 方法:被修饰的方法不能被重写
修饰符 final 返回值类型 方法名(参数列表){
    //方法体
}
  • 变量:被修饰的变量不能被重新赋值

局部变量–基本类型: 基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改

局部变量–引用类型: 引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改,但是不影响对象内部的成员变量值的修改

成员变量:成员变量设计到初始化问题,初始化方式有两种,只能显示初始化或者构造方法初始化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值