黑马程序员技术交流社区

标题: 继承和多态;这个例子可以帮我更好的理解面向对象的特征,更加明白对象调用方法的区别 [打印本页]

作者: 沐小北    时间: 2014-3-29 13:37
标题: 继承和多态;这个例子可以帮我更好的理解面向对象的特征,更加明白对象调用方法的区别
class Person {
//  Person(){
//   System.out.println("*******");
//  }
public void fun1() {
  System.out.println("1 Person(fun1)");
}
public void fun2() {
  System.out.println("2 Person(fun2)");
}
public void fun3(int a,int b) {
  System.out.println(a+b);
//  return a+b;
}
}

class Student extends Person{
  public void fun1() {
   System.out.println("1 Student(fun1)");
  }
  public void fun2() {
   System.out.println("2 Student(fun2)");
  }  
  public void fun3() {
   System.out.println("3 Student(fun3)");
  }
  public void fun4() {
   System.out.println("4 Student(fun4)");
  }  
}

class StudentExtendsPersonTest{
  public static void main(String []args) {
//   Person p = new Person();
//   p.fun1();
//   p.fun2();
//   p.fun3(3,5);
  
//   Student s = new Student();
//   s.fun1();
//   s.fun2();
//   s.fun3();
//   s.fun4();
   Person p = new Student();//向上转型
//   p2.fun1();
//   p2.fun2();//转型之后,p2会先调用子类已经覆写的父类的方法;如没有覆写,则还是调用p2自己的方法
//   p2.fun3(3, 6);
  
   Student s2 = (Student)p;//向下转型
//   s2.fun1();
//   s2.fun2();
//   s2.fun3();
//   s2.fun4();
  
   p.fun1();
   p.fun2();
   p.fun3(5, 8);
  }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2