面向对象05:package、import和访问修饰符

package和import

package:

定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名的冲突,这会给组件复用以及团队间的合作造成很大的麻烦

在Java语言中,用包(package)的概念来解决命名冲突的问题。在定义包的语法为:package 包名;

注:必须写在Java源文件的最开始,此时类的全名为:包名+类名。不同的包中也可以有相同类名。

  1. 作用:避免类名的冲突
  2. 包名可以有层次结构
  3. 类的全称:包名.类名
  4. 建议:包名所用字母都小写
import:
  1. 同包中的类可以直接访问
  2. 声明类,不有写全称(不建议.* 影响运行效率)

访问控制修饰符

数据私有化private,行为公开化public

  1. public:公开的,-----------任何类
  2. protected:受保护的,–本类,派生类,同包类
  3. 默认的:什么也不写,----本类,同包类
  4. private:私有的,---------本类
修饰符本类同包类子类其他类
public可以可以可以可以
protected可以可以可以不能
默认(什么也不加)可以可以不能不能
private可以不能不能不能

final:最终的、不可变的———一般不用

  1. 修饰变量:变量不能被改变
  2. 修饰方法:方法不能被重写
  3. 修饰类:类不能被继承,但可以继承其他类

static

  1. 静态变量

    • 由static修饰
    • 属于类的,存储在方法区中,只有一份
    • 常常通过类名点来访问
    • 怎么用:所有对象所共享的数据(图片、音频、视频等)
  2. 静态方法

    • 由static修饰
    • 属于类的,存储在方法区中,只有一份
    • 常常通过类名点来访问
    • 静态方法没有隐式this传递,没有this意味着没有对象,而实例变量必须通过对象来访问,所以静态方法中不能直接访问实例成员。
    • 何时用:方法的操作仅与参数变量相关,与对象无关。
  3. 静态块

    • 属于类的,在类被加载期间自动执行,类只被加载一次,所以静态块只执行一次
    • 何时用:常常用于加载/初始化静态资源(图片、视频、音频等)

    在new的时候执行。即使创建多个对象,也只有一份,降低内存的开销

扩展:成员变量

  1. 实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几个
  2. 静态变量:由static修饰,属于类的,存储在方法区中,只有一份

内存管理

  1. 堆:new出来的对象(包括实例变量)
  2. 栈:局部变量(包括方法的参数)
  3. 方法区:class字节码文件(包括方法,静态变量)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值