static关键字 静态的
--1,特点 --可以修饰成员变量,成员方法 --随着类的加载而加载,优先于对象加载 --只加载一次,就会一直存在,不再开辟新空间 --全局唯一,全局共享 --可以直接被类名调用 --静态只能调用静态,非静态可以随意调用
总结 :
1, 被static修饰后的特点 : 全局共享 + 可以被类名直接调用 + 加载的比对象早 + 只能调用静态的
2, 静态资源 也叫类的资源. 跟随类的加载而加载 , 直到类消失静态资源才消失 .
public class C7 {
public static void main(String[] args) {
//2, static的资源多了一种调用方式 , 除了可以被对象调用 , 还可以被类名调用
//3, 静态资源 加载时间比对象早 , 跟着类的加载就加载了
Perspm.eat();
System.out.println(Perspm.name);
Perspm p = new Perspm();
//p.eat();
p.sleep();
System.out.println(p.name);
System.out.println(p.age);
//4, 静态资源都是 共享资源 . 在多个对象间共享
Perspm p2 =new Perspm();
p2.name = "钟南山";
Perspm p3 = new Perspm();
System.out.println(p3.name);
}
}
class Perspm{
static String name;
int age;
//1, 当方法被static修饰后,,,,就变成了静态资源
static public void eat(){
//5, 静态的资源 调用 普通资源 -- 不能直接调用 ,需要变成静态的 --- 静态资源只能调用静态的
//sleep();
System.out.println(name);
System.out.println("eat()");
}
public void sleep(){
//6, 普通的资源 调用 其它资源 -- 可以调用任意的资源(普通的或者静态的都行)
eat();
System.out.println(name);
System.out.println(age);
System.out.println("sleep()");
}
}
final关键字
--1,概述 来的初衷,是为了限制子类重写的权利. 子类继承之后,想重写就重写太随意了. 如果父类的某些功能不想被子类改,可以修饰成final的.最终的. --2,特点 --修饰类 --不能被继承 --修饰成员变量 --值不能被修改 --变成了常量 --修饰成员方法 --子类只能继承不能重写
//总结:
//1, 来了是为了 限制 子类修改的权利
//2, 修饰的类 不能被继承
//3, 修饰的方法 只能被继承不能被重写
//4, 修饰常量 值不能被修改
public class C8 {
public static void main(String[] args) {
Zi5 zi = new Zi5();
// zi.name = "尼古拉斯.赵四" ; //3, name被final了,不能改值了
System.out.println(zi.name);
zi.show();
}
}
//1, 类可以被final修饰,,,只不过子类就不能继承了The type Zi5 cannot subclass the final class Fu5
//final class Fu5{
class Fu5{
//2, final可以修饰变量,,,,,必须完成初始化,,,,,但是,值就不能再被修改了 --- 叫常量
final String name = "" ;
public static final int AGE = 18 ;
//3, final 修饰方法,不能被重写,但是可以被继承
final public void show() {
System.out.println(1);
}
}
class Zi5 extends Fu5{
//想改 -- 方法重写 --方法声明 和父类一样 + 权限要够
//4, 父类中的show()被final了,不能重写,只能继承过来用Cannot override the final method from Fu5
// public void show() {
// System.out.println(2);
// }
}
原文:https://www.cnblogs.com/liang-shi/p/13823878.html