java 类修饰符 作用域_Java之抽象_封装

bf2f6485fb89e11a25e418f8841ed623.png

对于不是代码狗来说,何谓抽象呢?可否让小弟一猜呢——拿鞭子抽大象.......

哈哈,开个玩笑,当然不是啦~

抽象

抽象就是把现实生活中的事物提取到计算机中描述。通俗地说,就是通过观察,抽出具体事物相象的部分

抽象的步骤

  1. 归类,根据业务逻辑对目标实体进行发现其种类,一般是名词。
  2. 发现特征(属性),发现属性时,一定要结合需求亦或是业务逻辑,一般也是名词。
  3. 发现行为(方法),发现行为时,一定也要结合需求或业务逻辑,一般动词用的多。

构造方法

构造方法专门用于构造对象,通常和new搭配使用。 根据是否有形式参数分为有参构造方法和无参构造方法

语法如下:

[

无参构造

在类中,如果没有显示的为类定义无参构造方法。jvm默认给该类分配一个无参构造。

[

举个栗子吧!Dog类默认构造方法如下形式:

public 

构造方法在构造对象时被调用,特别是无参构造方法用于在构造对象时给对象赋值默认的初始值。

public 

有参构造

当在构造对象时需要传入特定的值时,可以使用有参构造。
[

有参的Dog类:

public 

成员变量和局部变量的优先级

在一个作用域中,变量首先从自身作用域开始查找,如果能找到,不在向上查找,如果查不到,继续向上找。

有参构造和无参构造构成方法重载

public 

This关键字:表示当前对象

static关键字:表示静态的意思,可以修饰变量和方法。

static修饰变量称为静态变量,修饰的方法称为静态方法。

静态变量(类变量)

static修饰的变量分配在方法区(共享区、静态区),归类所有,该类的所有实例都可以访问该静态变量。
类的静态变量被该类的所有实例所共享。

静态变量的访问

  • 类名.静态变量
  • 对象.静态对象

实例如下啊:

public 

静态方法

用static修饰的方法称为静态方法,归类所有。

静态方法的访问方式:

  • 类名.静态方法()
  • 对象.静态方法()

下方高能,以下几点要注意!!!

A.静态方法不能访问实例变量、this、实例方法

public 

B.实例方法可以访问静态变量或者静态方法

public 

那么,为什么静态成员不能访问非静态(实例)成员?

当创建对象时,jvm加载字节码,读取字节码信息,如果字节码类中包含静态成员,首先要给静态成员分配空间。在没有创建对象前,静态成员已经存在。此时静态方法不能访问实例成员。
实例方法可以访问静态成员,原因是对象已经产生。
一句话:静态成员比实例成员先分配空间。

静态特性

  1. static关键字可以修饰变量,称为静态变量,修饰方法称为静态方法。
  2. static修饰的成员,归类所有。静态变量也称为类变量,静态方法也叫类方法。
  3. 静态成员分配在方法区(共享区),该类的所有实例都共享静态成员。
  4. 静态方法中不能访问实例成员,实例方法可以访问静态成员。
  5. 静态成员比实例成员先分配空间。静态成员在方法区,实例成员在堆区。

代码块

代码块{}在java中可以分为普通代码块、构造代码块、静态代码块、同步代码块。

普通代码块

普通代码块也就是作用域块。 作用域嵌套和作用域链。

构造代码块

构造代码块在类的内部,方法的外部定义,通过{}定义。 构造代码块一般用于构造对象前的准备工作。

1.构造代码块构造一个对象,执行一次。

2.构造代码块先于构造方法执行。

静态代码块

静态代码块在类的内部,方法的外部定义。通过static{}定义。 静态代码块一般用于静态方法执行前准备工作。

栗子如下:

public 

总结:

  • 静态代码块在类加载时执行一次。
  • 静态代码块先于构造代码块、构造方法执行。
  • 静态代码块不能访问实例成员。

封装

将表的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的步骤:

  1. 属性私有化。修改属性的修饰符为private。
  2. 提供共有的setter/getter方法,对属性进行读写。
  3. 在setter/getter中加控制逻辑,对写入的数据进行正确性校验。
public 

那么,封装到底有什么好处呢?

  • 隐藏类的实现细节
  • 规定统一的方式(setter/getter)访问数据
  • 方便加入校验控制逻辑
  • 方便后期维护

静态常量

被static final修饰的量,称为静态变量,归类所有。一般用于存储不会经常发生变化的量。
public 

包有什么用?

解决类的命名冲突问题。

包的好处

  1. 解决类的命名冲突的问题。
  2. 便于管理
  3. 更好的保护类、属性、方法。

使用关键字packahe创建一个包,package必须写到源代码第一句。

包的命名规则:

包名用小写,不能以.开头和结尾。 包名一定要唯一。 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。e.g com.baidu 包名后续部分依不同机构内部的规范不同而不同。e.g com.baidu.dev.yunpan

5b75bdd7b0ce08dde0c0a27f01f792e3.png

好啦,今天大饼我就先分享到这吧,我们下期见~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值