A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-11 11:56  /  1322 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-11 15:37 编辑

在java编程中,我知道有类型转换,例如String和int类型的转换。但是什么是对象类型转换?使用对象类型转换有什么用?看了书后有点晕。。。。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

6 个回复

倒序浏览
java是面向对象的变成语言。封装继承多态,这种机制使得程序扩展性很强。
基类的引用指向其子类的对象叫向下转型。
子类对象转换成基类叫向上转型。
好处就是,举个例子。如果没有继承就得写三个方法。
  1. class Person{
  2.         public String colour="黄色";
  3.         public void outColour(){
  4.                
  5.                 System.out.println("皮肤颜色为"+colour);
  6.         }
  7. }

  8. class BlackPerson{
  9.         public String colour="黑色";
  10.         public void outColour(){
  11.                 System.out.println("皮肤颜色为"+colour);
  12.         }
  13. }
  14. class WhitePerson{
  15.         public String colour="白色";
  16. }
  17. public class Test4 {

  18.         public static void main(String[] args) {
  19.                 // TODO Auto-generated method stub
  20.                 Person p=new Person();
  21.                 WhitePerson wp=new WhitePerson();
  22.                 BlackPerson bp=new BlackPerson();
  23.                 outColour( p);
  24.                 outColour(wp);
  25.                 outColour(bp);
  26.         }

  27.         public static void outColour(Person p){
  28.                 System.out.println("皮肤颜色为"+p.colour);
  29.         }
  30.         public static void outColour(WhitePerson wp){
  31.                 System.out.println("皮肤颜色为"+wp.colour);
  32.         }
  33.         public static void outColour(BlackPerson bp ){
  34.                 System.out.println("皮肤颜色为"+bp.colour);
  35.         }
  36.        
  37.        

  38. }
复制代码
有了继承,多态性就可以这样写,更容易扩展,主要代码不必更改,大概就这个意思,水平有限,,
  1. class Person{
  2.         public String colour="黄色";
  3.         public void colour(){
  4.                
  5.                 System.out.println("皮肤颜色为"+colour);
  6.         }
  7. }

  8. class BlackPerson extends Person{
  9.         public String colour="黑色";
  10.         public void colour(){
  11.                 System.out.println("皮肤颜色为2"+colour);
  12.         }
  13. }
  14. class WhitePerson extends Person{
  15.         public String colour="白色";
  16.         public String Language="英语";
  17.         public void colour(){
  18.                 System.out.println("皮肤颜色为3"+colour);
  19.         }
  20. }
  21. public class Test4 {

  22.         public static void main(String[] args) {
  23.                 // TODO Auto-generated method stub
  24.                 Person p=new Person();
  25.                 Person wp=new WhitePerson();
  26.                 Person bp=new BlackPerson();
  27.                 colour2( p);
  28.                 colour2(wp);
  29.                 colour2(bp);
  30.         }

  31.         public static void colour2(Person p){
  32.                 p.colour();
  33.         }
  34.        
  35.        

  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 辛苦啦

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
黄炳期 发表于 2013-11-11 14:42
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89 ...

没注意过 sorry 我以为有人回答了会自动提问结束的  现在知道了 thanks
回复 使用道具 举报
黄炳期 发表于 2013-11-11 14:42
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89 ...

没注意过 sorry 我以为有人回答了会自动提问结束的  现在知道了 thanks
回复 使用道具 举报
黄炳期 发表于 2013-11-11 14:42
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89 ...

没注意过 sorry 我以为有人回答了会自动提问结束的  现在知道了 thanks
回复 使用道具 举报
不抛弃不放弃 发表于 2013-11-11 15:39
没注意过 sorry 我以为有人回答了会自动提问结束的  现在知道了 thanks

:L好吧,注意下就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马