------- android培训、java培训、期待与您交流! ----------
1.final有最终的意思,是java中的一个修饰符,它可以修饰非抽象类、非抽象类成员方法和变量。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
final class Demo
{
public static final double PI = 3.14;//final修饰成员变量
final void show1(){}//final修饰成员方法
void show2()
{
final int y = 4;//final修饰局部变量
System.out.println(PI);
}
}
//class SubDemo extends Demo{}Demo类被final修饰不能被继承
class FinalDemo
{
public static void main(String[] args)
{
System.out.println("final");
}
//void show1(){} 被final修饰的成员方法不能被复写
}
2.static:静态的意思,是一个修饰符,用于修饰成员(成员变量,成员函数)。当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员。
static特点:
(1)随着类的加载而加载。也就说:静态会随着类的消失而消失。说明它的生命周期最长。
(2)优先于的对象存在。明确一点:静态是先存在,对象是后存在的。
(3)被所有对象所共享。
(4)可以直接被类名所调用。
静态使用注意事项:
(1)静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态。
(2)静态方法中不可以定义this,super关键字。
因为静态优先于对象存在,所以静态方法中不可以出现this,super。
(3)主函数是静态的。
class Person
{
String name;//成员变量,实例变量
static String country = "CN";//静态的成员变量,类变量
public static void show()//静态方法
{
System.out.println(".......");
//this.haha();静态方法不可以出现this关键字
}
public void haha()
{}
}
class StaticDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.name = "zhangsan";
p.show();
System.out.println(p.country);
System.out.println(Person.country);//类名调用静态成员变量
Person.show();//类名调用静态方法
}
}