| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:新手愚笨,这是什么问题啊!
只看楼主 加入收藏
hxt532084126
Rank: 1
等 级:新手上路
帖 子:34
专家分:5
注 册:2012-8-26
结帖率:78.57%
收藏
已结贴  问题点数:10 回复次数:4 
新手愚笨,这是什么问题啊!
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication19
{
    class kaka
    {
        private int x;
        private int y;
        public int X
        {
            get { return x;}
            set { x = value; }
        }
        public int Y
        {
            get { return y;}
            set { y = value; }
        }
        public virtual int add1()
        {
            return X + Y;
        }
    }
    class caca : kaka
    {
        public voerride int add1()
        {
            
            return X+Y+X;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            caca aa=new caca();
            kaka bb = (kaka)aa;
            aa.X = 3;
            aa.Y = 3;
            Console.WriteLine(bb.add1());
            Console.WriteLine(aa.add1());
            Console.ReadLine();

        }
    }
}
这个运行结果是9,9  而如果我把override替换为new则是6,9.
为什么呢?书上说这样效果是一样的呀?
搜索更多相关主题的帖子: set namespace private public return 
2013-03-13 14:01
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:10 
这是面向对象的继承问题。
aa的值为9应该很容易理解吧,因为aa是caca对象,所以aa.add1()总会进入到caca类去执行add1()方法,值为9
关建是bb,bb是由aa强转为基类kaka类的,虽然引用变为了基类,但实质上bb是子类caca类。这里要记住,子类可以强转为基类,基类不能强转为子类。
overrid表示重写,是用在子类重写基类的方法上。
在执行bb.add1()的时候,因为bb实质上是caca类,会先判断caca类是否重写基类的add1()方法,如果有,则执行重写方法。如果没有,则执行基类方法。
new表示新创建,如果把overrid改为new,则表示子类的add1()是一个新方法,与基类的add1()方法没有关系。
这时在执行bb.add1()方法的时候,因为子类没有重写基类方法,所以执行的是基类的add1()方法,值为6

这是面向对象的继承概念中非常重要的知识点,在编程中应用非常多,所以要好好的理解
2013-03-13 14:25
elongtown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:138
专家分:1003
注 册:2013-2-18
收藏
得分:0 
楼上正解,来蹭个分,呵呵呵
2013-03-14 09:53
开始学习编程
Rank: 2
等 级:禁止访问
帖 子:11
专家分:25
注 册:2013-3-7
收藏
得分:0 
你想达到什么效果呢?

C#学习交流群271685085
2013-03-15 20:30
开始学习编程
Rank: 2
等 级:禁止访问
帖 子:11
专家分:25
注 册:2013-3-7
收藏
得分:0 
加一下我的qq群:271685085  。c#学习交流群

C#学习交流群271685085
2013-03-15 20:31
快速回复:新手愚笨,这是什么问题啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023031 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved