final关键字 public class Test { public static void main(String[] args) { //final 修饰局部变量 (基本数据类型) //一旦赋值终身不变 final int i; i=1;//只能赋值一次 //final 修饰局部变量 (引用数据类型) //一旦赋值一个地址,终身不变 //final Zi z=new Zi(); } } package com.oracle.demo19; //用final修饰的类不能被继承但是可以继承其他类 太监类 public final class FU { } public class Person { //当final修饰成员变量的时候必须手动赋值 //final String name="张三"; //或者构造方法赋值 final String name; public Person(String name){ this.name=name; } } final修饰的方法不可以被子类重写,但父类中没有被final修饰方法,子类重写后可以加final。 Static关键字 public class Student { private String name; private static String schoolName;//static修饰 public Student(String name, String schoolName) { super(); this.name = name; Student.schoolName = schoolName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchoolName() { return schoolName; } public void setSchoolName(String schoolName) { Student.schoolName = schoolName; } } public class Fu { static int i=1; public static void f(){ System.out.println("这是父类静态方法"); } } public class Zi extends Fu{ static int i=2; public static void f(){ System.out.println("这是子类重写后的方法"); } } public class Test { public static void main(String[] args) { Student s1=new Student("小红","清华大学"); Student s2=new Student("小明","清华大学"); Student s3=new Student("小亮","清华大学"); s2.setSchoolName("北京大学");//修改任意一个全部修改了 System.out.println(s1.getSchoolName()); System.out.println(s2.getSchoolName()); System.out.println(s3.getSchoolName()); Fu f=new Zi(); System.out.println(Fu.i);//类名.调用 Fu.f(); } } 多态调用方法中,编译看=左边,父类有,编译成功,父类没有,编译失败 运行,静态方法,运行父类中的静态方法, 运行,非静态方法,运行子类的重写方法 成员变量,编译运行全是父类