Java中 多态Polymorphic的向上/向下转型

创建一个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();
	}
}

运行结果

学生正在兴奋的搞学习
老师正在疯狂的讲课
吃饭
------------------
学生正在兴奋的搞学习
老师正在疯狂的讲课
------------------
学生正在兴奋的搞学习
学生类里面的独有方法
老师正在疯狂的讲课
学生类里面的独有方法

你可能感兴趣的:(Java,eclipse,java,开发语言,eclipse)