今天就所学知识, 对Java中三个修饰符做一个简单的总结
abstract关键字(要求子类强制重写父类的方法)
abstract使用总结:
1. abstract修饰的方法没有方法体
2. abstract修饰的方法必须定义在abstract修饰的类内或者interface接口内
3. 一个普通类【非abstract】修饰的类,继承了一个abstract类,那么必须实现在abstract类内的所有abstract修饰的方法,强制要求
4. 如果一个abstract A类继承另一个abstract B类,A类可以选择实现B类中abstract方法。
5. abstract修饰的类内允许普通方法
6. abstract修饰的类不能创建自己的类对象!!!
【原因】
abstract修饰的类内有可能存在abstract修饰的方法,而abstract修饰的方
法是没有方法体的,如果说创建了abstract修饰类对应的对象,不能执行没
有方法体的abstract方法
7. 一个类内没有abstract修饰的方法,那么这个类定义成abstract类有意义吗?
没有必要的!!!无意义的!!!
static关键字 (静态)
static可以用来共用类变量(静态属性)、类方法(静态方法)、常量(静态常量)、代码块或初始代码块(静态代码块)、内部类
1. 静态成员变量是使用static修饰的成员变量,定义在内存的【数据区】
2. 静态成员变量不推荐使用类对象调用,会提示警告
The static field SingleDog.info should be accessed in a static way
使用static修饰的SingleDog类内的info成员变量,应该通过静态方式访问
3. 静态成员变量使用类名调用是没有任何的问题。【墙裂推荐方式】
4. 在代码中没有创建对象时,可以通过类名直接使用静态成员变量,和【对象无关】
5. 代码中对象已经被JVM的GC销毁时,依然可以通过类名调用静态成员变量,和【对象无关】
6. 不管通过哪一种方式调用静态成员变量,修改对应的静态成员变量数据,所有使用到当前静态成员变量的位置,都会受到影响。
final关键字(最终的)
final修饰的成员变量
final修饰的成员变量定义时必须初始化,并且赋值之后无法修改,一般用于类内带有名字的常量使用
final修饰的成员方法
final修饰的成员变量不能被子类重写,为最终方法,可以用于一些安全性方法的定义
final修饰的局部变量
final修饰的局部变量一旦被赋值,不能修改!
final修饰的类
final修饰的类没有子类,不能被继承。
abstract修饰的类不能被final修饰。