1.Static修饰方法
public class MyStatic
{
public static void main(String[] args)
{
//MyStatic2 test = new MyStatic2();
//test.output();
MyStatic2.output();//可直接用【类名.方法名】的方式访问静态方法
}
}
class MyStatic2
{
public static void output()
{
System.out.println("output");
}
}
public class StaticTest3
{
public static void main(String[] args)
{
M m = new N();
m.output();//执行结果为M
}
}
class M
{
public static void output()
{
System.out.println("M");
}
}
class N extends M
{
@Override //表示重写父类方法。无法编译。静态方法只能继承,不能重写。
public static void output()
{
System.out.println("N");
}
}
2.final关键字可修饰属性、方法、类。
3.final修饰类
public class FinalTest
{
public static void main(String[] args)
{
F f = new F();//无法编译。final修饰的类是静态类,不能被继承。
}
}
final class E
{
}
class F extends E
{
}
4.final修饰方法
public class FinalTest2
{
public static void main(String[] args)
{
H h = new H();
h.output();
}
}
class G
{
public final void output()//静态方法,不能被重写。
{
System.out.println("G");
}
}
class H extends G
{
public void output()
{
System.out.println("H");
}
}
5.final 修饰属性
public class FinalTest3
{
public static void main(String[] args)
{
People people = new People();
people.age = 20;//无法编译。final修饰原生数据类型时,该原生数据类型的值不能发生变化。
}
}
class People
{
final int age = 10;
}
public class FinalTest4
{
public static void main(String[] args)
{
People people = new People();
//people.address = new Address();//无法编译。final修饰一个引用类型时,表示该引用类型不能再指向其他对象。
people.address.name = "beijing";//可编译。但该引用所指向的对象的内容时可以变化的。
}
}
class People
{
final Address address = new Address();
}
class Address
{
String name = "zhengzhou";
}