一、final关键字
1.final类是不能被继承的,所以也就没有子类了。例子如下:会报错
2.final 方法 顺便复习下重载和重写
2.1 重载例子:
public class TestFinalClass {
public static void main(String args[]){
}
public void add(int i){
System.out.print("parents..add...");
}
}
class TestChildrenClass extends TestFinalClass{
public void add(int i,int j){
System.out.print("children...add");
System.out.print("33333");
}
}
2.2 重写 override
public class TestFinalClass {
// private String name;
public static void main(String args[]){
new TestChildrenClass().add(0);
}
public void add(int i){
System.out.print("parents..add...");
}
}
class TestChildrenClass extends TestFinalClass{
public void add(int i){
System.out.print("children...add");
System.out.print("33333");
}
}
2.3 如果父类不想子类重写它的某个方法就可以用final来定义该方法,例子如下
public class TestFinalClass {
// private String name;
public static void main(String args[]){
new TestChildrenClass().add(0);
}
public final void add(int i){
System.out.print("parents..add...");
}
}
class TestChildrenClass extends TestFinalClass{
public void add(int i){//这样写会报错,无法重写
System.out.print("children...add");
System.out.print("33333");
}
}
除了上面这个用处,还有个用处就是高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
3.final变量
public class TestFinalClass {
public final static String s = ".......final s";
public final int E =1; //final成员变量必须付初值
// private String name;
public static void main(String args[]){
}
public static void add(int i){
final String m; //final非成员变量可以不用初值
m = "...m"; // 给予初值
m = "..sdjf";//出错 不能再给予值
}
}
4.final参数
public class TestFinalClass {
public static void main(String args[]){
}
public static void add(final int i){
System.out.print(""+i); // 只能使用该参数
i = 0;//不能给予值
}
}
二、static 关键字
1.static方法
public class TestFinalClass {
public static void main(String args[]){
TestChildrenClass.add(0); //可以在类创建之前引用这个static方法
}
}
class TestChildrenClass {
public static void add(int i){//然而是不能通过类的实例来引用的
System.out.print("children...add");
}
}
2.static 成员变量
public class TestFinalClass {
public static void main(String args[]){
String name = TestChildrenClass.name;//静态成员
}
}
class TestChildrenClass {
public static String name = "user";//不能通过类的实例来引用的,当用private修饰时就不可以用了
}
3.当static与final一起使用来修饰成员变量和成员方法,可简单理解为“全局常量”!
3.1 对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
3.2 对于方法,表示不可覆盖,并且可以通过类名直接访问。
本文出自 “小博客” 博客,请务必保留此出处http://9686567.blog.51cto.com/9676567/1591466
原文地址:http://9686567.blog.51cto.com/9676567/1591466