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();
}
}
多态调用方法中,编译看=左边,父类有,编译成功,父类没有,编译失败
运行,静态方法,运行父类中的静态方法,
运行,非静态方法,运行子类的重写方法
成员变量,编译运行全是父类