Java-oo day06 学习笔记 面向对象——static关键字(静态变量 静态方法 静态块 常量) /abstract关键字(抽象类 抽象方法)

1.static关键字

2.abstract关键字


static关键字的使用

static :静态的,Java中所有跟静态相关的,都是用static修饰
1) 用static修饰的变量--------静态变量
1.1) 属于类,不属于某个对象,无论创建多少个对象都只有一份,全体对象共享这同一份 , 每当执行Java程序的时候,会自动把.class字节码文件加载到方法区中
1.2) 常常通过类名点来访问
1.3) 何时用: 所有对象所共享的数据(图片、音频、视频等)

变量之间的关系:
成员变量:在类中声明的变量
成员变量分类:
1.实例变量:属于每个对象共有的属性
2.静态变量:是属于类的,只有一份,全体对象共享这同一份
3.常量:是一个不变的常数

2) 用static修饰的方法--------静态方法
2.1) 属于的,存储在方法区中,只有一份
2.2) 常常通过类名点来访问
2.3) 静态方法是属于类的,不属于对象,所以在静态方法中没有隐式的this关键字,使用静态方法不能访问实例变量
main方法也是个静态方法,所以在main方法中也不能直接访问实例变量
2.4) 何时用: 方法的操作与对象无关

3)用static修饰的代码块--------静态块
结构: static{}
3.1) 在类被加载期间自动执行,因为类只被加载一次,所以静态块只执行一次
3.2) 何时用: 初始化/加载静态资源(图片、音频、视频等)

4)用static final修饰的变量-------静态常量
常量一般用于声明不会改变的量
在开发中一般把一个固定 不变的值声明为静态常量
静态常量必须用static和final同时定义
4.1) 必须声明同时初始化
4.2) 通过类名点来访问,不能被改变
4.3) 建议: 常量名所有字母都大写,多个单词之间用_ 分隔
static final int NUM=18;
4.4) 编译器在编译时会将常量直接替换为具体的值,效率高
4.5) 何时用: 数据永远不变、经常使用

abstract关键字的使用

1) 用abstract修饰的类--------抽象类
1.1) 如果一个类中没有包含足够的信息来描述一个具体的对象,那么这个类就是个抽象类
1.2) 抽象类不能被实例化
1.3) 抽象类是需要被继承的
1.3.1) 派生类要重写所有抽象方法----------变不完整为完整
1.3.2) 派生类也声明为抽象类---------------不常用

2) 用abstract修饰的方法--------抽象方法
2.1) 如果在父类中方法功能不明确,不完整,那么就可以把这个方法定义为抽象方法
2.2) 抽象方法没有方法体,连大{}都不能写
修饰符 abstract 返回值类型 方法名();
2.3) 抽象方法必须放在抽象类中,因为抽象方法是不完整的,所以抽象方法所在的类也必须定义为抽象类
2.4) class 类名 继承抽象类: 由于抽象类是不完整的,所以抽象类需要被继承,子类继承后必须重写父类中的方法,给一个具体的实现

3)抽象类的意义:
3.1) 封装派生类所共有的属性和行为------代码复用
3.2) 为所有派生类提供统一的类型---------向上造型
3.3) 抽象类中包含抽象方法,为所有子类提供了了统一的入口(能点出来),派生类的具体实现不同,但入口是一致的

知识点补充:
1.
问: 派生类既然还是需要重写的,那还要抽象方法step()干什么?
答: 当向上造型的时候,通过超类的引用能点出来---------但是最终调用的还是派生类重写之后的

问: 不设计成抽象方法,就设计为普通方法,为什么不可以?
答: 若把step()设计为普通方法,则派生类中可以重写也可以不重写,这样就达不到统一的效果的

很多时候做抽象方法是目的就是为了加限制、做统一

2.代码设计规则:

设计规则:
1.1 将所有派生类所共有的属性和行为,抽到超类中
2.2 所有派生类的行为都一样,设计普通方法
所有派生类的行为都不一样,设计为抽象方法
3.3 将部分派生类所共有的行为,抽到接口中
接口是对继承的单根型的扩展-------------实现多继承
3.
堆: new出来的对象(包括实例变量)
栈: 局部变量
方法区: .class字节码文件(包括方法、静态变量)
成员变量:
实例变量: 没有static修饰,属于对象的,存储在堆中,有几个对象就有几份,通过对象点来访问
静态变量: 有static修饰,属于类的,存储在方法区中,只有一份,通过类名点来访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值