父类:
/**
* @Title: Person.java
* @Package demo
* @Description: TODO(用一句话描述该文件做什么)
* @author: zcx
* @date: 2019年3月30日 下午2:53:16
* @version V1.0
*
*/
package demo;
/**
* @ClassName: Person
* @Description:TODO(这里用一句话描述这个类的作用)
* @author: zcx
* @date: 2019年3月30日 下午2:53:16
*
*/
public class Person {
Long id;
String name;
public static void say() {
System.out.println("person");
}
public void say2() {
System.out.println("person");
}
public final void say3() {
System.out.println("person");
}
}
子类:
/**
* @Title: Student.java
* @Package demo
* @Description: TODO(用一句话描述该文件做什么)
* @author: zcx
* @date: 2019年3月30日 下午2:53:42
* @version V1.0
*
*/
package demo;
/**
* @ClassName: Student
* @Description:TODO(这里用一句话描述这个类的作用)
* @author: zcx
* @date: 2019年3月30日 下午2:53:42
*
*/
public class Student extends Person{
private String studentNo;
public static void say() {
System.out.println("stu");
}
public void say2() {
System.out.println("stu");
}
public void say3(String a) {
System.out.println("stu");
}
}
测试类
package demo;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
//父类引用static
Person person = new Student();
//persion
person.say();
//stu
person.say2();
//persion
person.say3();
Student Student = new Student();
//stu
Student.say();
//stu
Student.say2();
//persion
Student.say3();
}
}
说明:
final方法不可重写和隐式重写,可重载;
static方法不可重写可隐式重写,static方法是类的,当使用Person person = new Student();时对象指定static方法为父类的,若Student Student = new Student();,对象指定的类为Student ,则调用的static方法是子类的。
向上转型:子类对象转为父类,父类可以是接口。公式:Person f = new Student ();Person 是父类或接口,Student 是子类。
向下转型:父类对象转为子类。公式:Student s = (Student )f;