创建一个Person父类
/**
* 教师类和学生类的父类
* 子类需要重写父类中的Eat()方法
* @author it
*/
public class Person {
//姓名
private String Name;
//年龄
private String Age;
//行为方法
public void Eat(){
System.out.println("吃饭");
}
//有参和无参构造方法
public Person(String name, String age) {
super();
Name = name;
Age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
//get 和 set 方法
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getAge() {
return Age;
}
public void setAge(String age) {
Age = age;
}
//重写toString方法
@Override
public String toString() {
return "Person [Name=" + Name + ", Age=" + Age + "]";
}
}
书写 一个Student类继承Person类
/**
* Student类继承Person类中的Eat()方法并重写
* 书写一个Studnet类里面的独有duyou()方法
*/
public class Student extends Person {
// 重写父类中的Eat()方法
@Override
public void Eat() {
System.out.println("学生正在兴奋的搞学习");
}
public void duyou() {
System.out.println("学生类里面的独有方法");
}
}
书写一个Teacher类继承Person类
j
/**
* Teacher类继承Person类中的Eat()方法并重写
* 书写一个Teacher类里面的独有duyou()方法
*/
public class Teacher extends Person{
//重写Person父类中的Eat()方法
@Override
public void Eat() {
System.out.println("老师正在疯狂的讲课");
}
public void duyou() {
System.out.println("学生类里面的独有方法");
}
}
书写一个测试类,使用向上转型和向下转型
/**
* 学生类和教师类的测试类
*/
public class Test {
public static void main(String[] args) {
Student s = new Student();//创建Student类对象
s.Eat();//调用Student类里面的重写方法
Teacher t = new Teacher();//创建Teacher类对象
t.Eat();//调用Teacher类里面的重写方法
Person p = new Person();//创建Person类对象
p.Eat();//调用Person类里面的重写方法
System.out.println("------------------");
//父类接收子类
Person p2 = new Student();
Person p3 = new Teacher();
//父类调用子类里里面的重写方法
p2.Eat();
p3.Eat();
System.out.println("------------------");
//父类向下转型--->可以调用子类里面的独有方法
Student s2 = (Student)p2;
//父类向下转型--->可以调用子类里面的独有方法
Teacher s3 = (Teacher)p3;
s2.Eat();
s2.duyou();
s3.Eat();
s3.duyou();
}
}
运行结果
学生正在兴奋的搞学习
老师正在疯狂的讲课
吃饭
------------------
学生正在兴奋的搞学习
老师正在疯狂的讲课
------------------
学生正在兴奋的搞学习
学生类里面的独有方法
老师正在疯狂的讲课
学生类里面的独有方法