JAVA面向对象④(package/import,访问控制修饰符public/protected/默认的/private,final,static)

回顾:

  1. 向上造型:

----------------------------------------------------------------------------------------------------------------------

           package和import:

说明:

-类的访问权限只能是public或默认的

  • 超类型的引用指向派生类对象
  • 能点出什么是看前面的引用类型-----规定
    Person ps=new Student();//向上造型
    Student zs=new Student();
    Person ps=zs;//也发生了向上造型

    2.方法的重写(override):

  • 发生在父子类中,方法名相同,参数列表相同
  • 重写方法被调用时,看对象类型-----规定
  • 重写与重载的区别:
  • 重写:发生在父子类中,方法名相同,参数列表相同
  • 重载:发生在同一类中,方法名相同,参数列表不同
  • package:声明包
  • 避免类的命名冲突
  • 同包中的类不能同名,但不同包中的类可以同名
  • 类的全称:包名.类名
  • 包名常常用层次结构,建议所有字母都小写
  • import:导入类
  • 同包中的类可以直接访问,不同包的类不能直接访问,若想访问:
    package a.b.c.d.e.f;
    class Aoo{//全名 a.b.c.d.e.f.Aoo
    }
    
    package b.y.u.i.f.h;
    class Aoo{//全名 b.y.u.i.f.h.Aoo
    }

    2.访问控制修饰符:------保护数据安全

  • public:公开的,任何类都可以访问
  • protected:受保护的(本类,子类,同包类都能访问)-----一般不用(因为后续会讲到getter/setter)
  • 默认的:什么也不写,(本类,同包类能访问)-----另外Java不建议用默认权限
  • private:私有的,本类才能访问

-类中成员的访问权限如上4种都可以

----访问权限由大到小:public > protected > 默认的 >private

          公开 本类子类同包类 本类同包类 本类

class Card{
    private String cardId;
    private String cardPwd;
    private double balance;
}
 public boolean checkPwd(String pwd){//检测密码正误,但是看不见密码是多少(保护数据)
      if(cardPwd==pwd){
                return true;
      }else{
                return false;
      }
 }
  1. final:最终的,不可改变的
  • 修饰变量:变量不能被改变
  • 修饰方法:方法不能被重写
  • 修饰类:类不能被继承(final类不能当父类,可以当子类,也就是说final类不能被继承但是可以继承别人)

      2.static:静态的

  • 静态变量:由static修饰,属于类,存储在方法区中只有一份,常常通过类名点来访问

(静态变量一般用于所有对象所共享的数据(图片,音频,视频等))

  • 静态方法:由static修饰,属于类存储在方法区中,只有一份,常常通过类名点来访问,静态方法中没有隐式this传递,不能直接访问实例成员,何时用:方法的操作与对象无关
  • 静态块:由static修饰,属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块只执行一次

何时用:加载/初始化静态资源(图片,音频,视频等)

静态块:-----初始化静态变量
构造方法:-----初始化实例变量
 
侦察潜艇图片------设计为静态变量img(减少内存)
假设在构造方法中给img赋值
-----------------new一个对象就会读取一次图片,有100个对象就读100次图片----多次读取图片影响性能
假设在静态块中给img赋值
-----------------只在加载类的时候会读取一次图片,无论new了多少个对象----只读一次,提高性能

静态块
static {
      
}

补充:

  1. 数据(成员变量)私有化(private),行为(方法)大部分都公开化(public)
  2. 成员变量分两种:
  • 实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份

通过引用(对象)点来访问 zs.name/age/address;

  • 静态变量:由static修饰,属于类的,存储在方法区中,只有一份

通过类名点来访问

class Aoo{ int a;//实例变量(对象,有几个对象就有几份,先创建对象再通过引用区打点来访问) static int b;//静态变量(类,只有一份,通过Aoo打点进行访问) }

3.内存管理:由JVM来管理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值