黑马程序员技术交流社区

标题: 一个小疑惑??帮忙解释一下!! [打印本页]

作者: FlyTrem    时间: 2014-3-26 15:26
标题: 一个小疑惑??帮忙解释一下!!
本帖最后由 FlyTrem 于 2014-3-26 21:42 编辑

父类类型的变量不能用来调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法。
父类转化为子类的类型变量,那么方法调用后,变量赋值是属于子类类型,那么是要对父类类型的成员进行赋值的,是否要强转回父类类型?

作者: awkflf11    时间: 2014-3-26 15:46

父类类型的变量不能用来调用子类特有的方法。
必须强转为子类类型变量后,才能直接调用子类特有的方法。

父类转化为子类的类型变量,那么方法调用后,变量赋值是属于子类类型,

要对父类类型的成员进行赋值的,

不需要要强转回父类类型---------------因为既然是继承父类,,,子类可以直接用父类的成员。。。不需要在强转转。。

什么叫强转??---是父类转子类才用到。。。。子类提升,,根本不需要强转的。。。



作者: 程浩    时间: 2014-3-26 16:02
父类强转为子类,调用子类方法
那你肯定已经创建了一个父类对象咯
那你再给父类的变量赋值啊什么的就直接调用你创建的父类对象不久ok了么
不用再转回来了:lol
  1. package test;

  2. public class FatherClass {
  3.         private int father_int;
  4.         public void method_father(){
  5.                 System.err.println("调用了FatherClass的method1方法");
  6.         }
  7.         public static void main(String[] args) {
  8.                 FatherClass father=new FatherClass();
  9.                 SonClass son=(SonClass)father;
  10.                 son.method_son();//子类方法
  11.                 father.setFather_int(1);
  12.         }
  13.         public int getFather_int() {
  14.                 return father_int;
  15.         }
  16.         public void setFather_int(int father_int) {
  17.                 this.father_int = father_int;
  18.         }
  19.        
  20. }
复制代码

作者: FlyTrem    时间: 2014-3-26 17:07
awkflf11 发表于 2014-3-26 15:46
父类类型的变量不能用来调用子类特有的方法。
必须强转为子类类型变量后,才能直接调用子类特有的方法。

噢噢噢噢噢噢,谢谢!




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