面向对象的四大特征 封装 继承 多态 抽象

Posted wanghuaying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的四大特征 封装 继承 多态 抽象相关的知识,希望对你有一定的参考价值。

1.封装
广义: 类 方法 包 的定义本身就是一种封装
狭义: 在设计一个类的时候
将所有的属性设置为私有的
并对各个私有的属性设计相应的 存/取方法 来完成对属性的使用

私有化只能代表封装的特性
可以说私有是封装的一种 不能说封装即是私有
封装的好处:
隐藏实现细节 提供公共的访问方式
提高了安全性
封装的原则:
将不需要对外提供的内容都封装起来
把属性隐藏 提供公共的方法进行访问
private关键字*****
关键字的特点:
1.私有的意思
2.是一个权限修饰符
3.可以修饰成员变量 和 成员方法
4.被其修饰的成员 只能在本类中被访问
封装的步骤:
1.把成员变量用private修饰
2.提供相应的 存/取方法 setXxx() 和 getXxx();

2.this关键字
this关键字指的是 当前对象的引用
作用:
this.属性 访问本类的成员变量
用来区分 成员变量 和 局部变量 重名的问题
this.方法 访问本类的成员方法
this() 访问本类的构造方法
()中可以有参数的 如果有参数 就是调用指定的有参构造
注意事项:
1.this() 不能使用在普通方法中 只能写在构造方法中
2.必须是构造方法中的第一条语句
3.static关键字(静态)
特点:
1.static静态 可以用来修饰共有的属性/行为
2.static与类相关 和对象无关 随着类的加载而加载 优先于对象而存在
3.被类的所有对象共享
例如 空调 就是静态 水杯 就是非静态
4.被static修饰的成员 多了一种调用方式 可以通过 类名.成员名 调用
方法区:
类信息被存储在一个称为方法区的内存空间中
类信息就是由类加载器在类加载时从文件中提取

静态(类)变量 也存储在方法区中
静态和非静态的区别*****
1.所属不同
静态属于类
非静态属于对象
2.内存中位置不同
静态 存在方法区的静态区中
非静态 存在堆内存中
3.内存中出现的时间不同
静态随着类的加载而加载 随着类的消亡而消亡
存活时间长 不建议定义过多
非静态随着对象的创建而存在 随着对象的消亡而消亡
语法:
修饰成员 (成员变量 / 成员方法)

修饰成员变量的时候
[访问权限修饰符] static 类型 属性名;
修饰成员方法的时候
[访问权限修饰符] static 返回值类型 方法名(参数列表){
方法体
}
静态修饰方法:
被静态修饰的方法 为静态方法
1.只能直接访问 静态成员 包括成员变量和成员方法
不能直接访问 非静态成员 包括成员变量和成员方法
必须创建该类对象 才能调用非静态成员

因为静态优先于对象存在 在静态方法加载进内存时
非静态的还没进入内存中

2.在静态方法中 没有this/super 关键字
非静态方法
可以访问静态成员 也可以访问非静态成员
总结:
静态虽好 不能乱用
利:
将对象共享的数据 进行单独存储 节省内存
可以直接用类名.调用
弊:
生命周期过长
访问出现局限性 静态只能直接访问静态

静态的内存图

技术分享图片
main方法梳理:
public static void main(String[] args){

}
主函数 是一个特殊的函数 可以被jvm直接调用 作为程序的入口
public 最大权限
static 静态的 在当前方法中会创建对象 需要在创建对象之前
先将main方法加载进内存
void 不确定的返回值 jvm不需要这个返回值
main 一个通用的名称 不是关键字 jvm会识别它
String[] 传入 存储String类型数据的数组
args 参数列表 名 整个main方法中 只有这个能随便写
代码块:
静态代码块 , 局部代码块 , 动态代码块
以{}包裹起来的代码 被称为一个代码块
局部代码块:
声明在方法中的代码块 执行时机与声明的位置相关
静态代码块:
使用static关键字修饰的代码块 在类加载时执行 并且 只执行一次
在类中 方法外定义
格式:
static{
执行内容
}
用于给类中的数据进行初始化 一般用于加载驱动 jdbc驱动
动态代码块:
又称为构造代码块 声明在类中的代码块 在创建对象是执行一次
每创建一个对象 就会执行一次动态代码块
在类中 方法外定义
格式:{
执行内容
}
执行顺序:
静态代码块>动态代码块>构造方法

 













































































































以上是关于面向对象的四大特征 封装 继承 多态 抽象的主要内容,如果未能解决你的问题,请参考以下文章

面向对象的三个特征:封装(抽象)继承多态

面向对象第二天

java面向对象之四大特征之继承

面向对象的三个基本特征

面向对象的特征

php面向对象 封装继承多态 接口重载抽象类最终类总结