请教各位老师,这段代码为什么会提示无法实现接口成员?

28大龄初学码农 2013-08-13 04:48:52
提示是这个问题:“A.Me”不实现接口成员“A.Ibankio.have”。“A.Me.have”无法实现接口成员,因为它不是公共的
请教各位大神,这是为什么呢?



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A
{
interface Ibankio
{
decimal have //已有钱数
{
get;
set;
}
void In(decimal a);//存入钱数;
void Out(decimal b);//支出钱数;
/*decimal c//剩余钱数
{
get;
set;

}*/

}

class Me:Ibankio
{
private decimal have
{
get
{
return have;
}
set
{
if (have < 0)
{
Console.WriteLine("卡内余额不足");
}
}
}
public void In(decimal a)
{
have += a;
Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a);
}
public void Out(decimal b)
{
if (b > have)
{
have -= b;
Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have);
}
else
Console.WriteLine("余额不足!");
}
/*public decimal c
{
get
{
return c;
}
set
{
if (have >= 0)
{
value = have;
c = value;
}
}
}*/
}

class Program
{
static void Main(string[] args)
{
Ibankio wo = new Me();
wo.have = 1000;
wo.In(10000);
wo.Out(12000);

}
}
}
...全文
471 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
流木晴天 2013-08-15
  • 打赏
  • 举报
回复
private decimal have
         {
             get
             {
                 return have;
             }
             set
             {
                 if (have < 0)
                 {
                     Console.WriteLine("卡内余额不足");
                 }
             }
}
这段很有问题,对于接口实现,接口里面不需要写权限,都是public,实现接口,如果不了解的话,VS环境,右键点击class Me : Ibankio的Ibankio,选择【重构】-【实现接口】,然后再在里面写代码吧。 这里是要用public的,另外这里的set都没做赋值处理,你要有个变量来接收,get的时候再return该变量,同时属性是建议你首字母大写的,于是变成这样:

private decimal _have;
public decimal Have
         {
             get
             {
                 return _have;
             }
             set
             {
                 _have=value;
                 if (_have < 0)
                 {
                     Console.WriteLine("卡内余额不足");
                 }
             }
}
如果自学的话,建议你看《你不知道的.net》
  • 打赏
  • 举报
回复
引用 26 楼 momo5156 的回复:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; namespace Error { interface Ibankio { decimal have //已有钱数 { get; set; } void In(decimal a);//存入钱数; void Out(decimal b);//支出钱数; } class Me : Ibankio { private static decimal count; public decimal have { get { return count; } set { if (count < 0) { Console.WriteLine("卡内余额不足"); } count = value; } } public void In(decimal a) { count += a; Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a); } public void Out(decimal b) { if (b < count) { count -= b; Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have); } else Console.WriteLine("余额不足!"); } /*public decimal c { get { return c; } set { if (have >= 0) { value = have; c = value; } } }*/ } class Program { static void Main(string[] args) { Ibankio wo = new Me(); int amount = 0; bool flag = true;//标志位,主要控制用户输入信息是否正确 string errorinput1="\\D"; string order=""; wo.have = 1000;//设置初始值 Console.WriteLine("------------------------欢迎使用自助存取款机!---------------------"); while (true) { while (flag) { Console.WriteLine("请选择操作:存钱请输入D,取钱请输入W,退出请输入Q"); string temp = Console.ReadLine(); if (temp.Equals("D") || temp.Equals("d") || temp.Equals("W") || temp.Equals("w") || temp.Equals("Q") || temp.Equals("q")) { flag = false; order = temp; } else Console.WriteLine("请检查您的输入:您输入的是{0},应为‘W’‘D’‘Q’中的一个!",temp); } flag = true; if (order.Equals("Q")||order.Equals("q")) break; Console.WriteLine(); while (flag) { Console.WriteLine("请输入金额并按回车键结束:"); string temp = Console.ReadLine(); flag=Regex.IsMatch(temp,errorinput1); if (!flag) amount = Convert.ToInt32(temp); else Console.WriteLine("您输入的是{0},应为数字!",temp); } flag = true; if (order.Equals("D") || order.Equals("d")) wo.In(amount); else if (order.Equals("W") || order.Equals("w")) wo.Out(amount); } Console.WriteLine("谢谢使用,再见!"); } } }
学习了,太厉害了,谢谢你,有的东西还有点看不懂,我会慢慢琢磨的! 是的,正在自学,看书貌似也没什么好办法~推荐点学习方法吧!
tcmakebest 2013-08-15
  • 打赏
  • 举报
回复
都是中文了怎么还不懂呢?【因为它不是公共的】,public 懂不
非凡棒棒糖 2013-08-15
  • 打赏
  • 举报
回复
我只是比你多点实践,我写的代码也有很多问题,关于怎么学还是得请教高手,我会误导你的,话说我也很发愁!
  • 打赏
  • 举报
回复
引用 19 楼 momo5156 的回复:
[quote=引用 18 楼 u011634834 的回复:] [quote=引用 16 楼 momo5156 的回复:] private decimal have { get { return have; } set { if (have < 0) { Console.WriteLine("卡内余额不足"); } } 这段代码总觉得有问题,我只是通过经验修改的,要说为什么你只能自己体会了,我只会改不会说,我的理论知识很薄
好的,谢谢你![/quote] 互帮互助![/quote] 不过,能不能帮我看一下,我那个in方法里面have+=a的这个过程为啥不能实现呢? 就是不能把have原来的值加进去!
非凡棒棒糖 2013-08-14
  • 打赏
  • 举报
回复
引用 18 楼 u011634834 的回复:
[quote=引用 16 楼 momo5156 的回复:] private decimal have { get { return have; } set { if (have < 0) { Console.WriteLine("卡内余额不足"); } } 这段代码总觉得有问题,我只是通过经验修改的,要说为什么你只能自己体会了,我只会改不会说,我的理论知识很薄
好的,谢谢你![/quote] 互帮互助!
  • 打赏
  • 举报
回复
引用 16 楼 momo5156 的回复:
private decimal have { get { return have; } set { if (have < 0) { Console.WriteLine("卡内余额不足"); } } 这段代码总觉得有问题,我只是通过经验修改的,要说为什么你只能自己体会了,我只会改不会说,我的理论知识很薄
好的,谢谢你!
智商余额不足 2013-08-14
  • 打赏
  • 举报
回复

namespace A
{
    interface Ibankio
    {
        decimal have  //已有钱数
        {
            get;
            set;
        }
        void In(decimal a);//存入钱数;
        void Out(decimal b);//支出钱数;
    }

    class Me : Ibankio
    {
        private decimal _hava;
        public decimal have
        {
            get { return _hava; }
            set
            {
                if (value < 0)
                {
                    Console.WriteLine("卡内余额不足");
                }
                else
                {
                    _hava = value;
                }
            }
        }
        public void In(decimal a)
        {
            have += a;
            Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a);
        }
        public void Out(decimal b)
        {
            if (b > have)
            {
                have -= b;
                Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have);
            }
            else
                Console.WriteLine("余额不足!");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Ibankio wo = new Me();
            wo.have = 1000;
            wo.In(10000);
            wo.Out(12000);

            Console.ReadLine();
        }
    }
}
非凡棒棒糖 2013-08-14
  • 打赏
  • 举报
回复
private decimal have { get { return have; } set { if (have < 0) { Console.WriteLine("卡内余额不足"); } } 这段代码总觉得有问题,我只是通过经验修改的,要说为什么你只能自己体会了,我只会改不会说,我的理论知识很薄
  • 打赏
  • 举报
回复
引用 楼主 u011634834 的回复:
提示是这个问题:“A.Me”不实现接口成员“A.Ibankio.have”。“A.Me.have”无法实现接口成员,因为它不是公共的 请教各位大神,这是为什么呢?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace A { interface Ibankio { decimal have //已有钱数 { get; set; } void In(decimal a);//存入钱数; void Out(decimal b);//支出钱数; /*decimal c//剩余钱数 { get; set; }*/ } class Me:Ibankio { private decimal have { get { return have; } set { if (have < 0) { Console.WriteLine("卡内余额不足"); } } } public void In(decimal a) { have += a; Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a); } public void Out(decimal b) { if (b > have) { have -= b; Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have); } else Console.WriteLine("余额不足!"); } /*public decimal c { get { return c; } set { if (have >= 0) { value = have; c = value; } } }*/ } class Program { static void Main(string[] args) { Ibankio wo = new Me(); wo.have = 1000; wo.In(10000); wo.Out(12000); } } }
确实能跑了!不过能简单帮我讲一下为啥这么改吗?
  • 打赏
  • 举报
回复
引用 10 楼 hwenycocodq520 的回复:
看调试错误啊...
接口里面不是不能用public吗
非凡棒棒糖 2013-08-14
  • 打赏
  • 举报
回复
//我做了下小修改,能跑了,不知道能不能满足需求 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Error { interface Ibankio { decimal have //已有钱数 { get; set; } void In(decimal a);//存入钱数; void Out(decimal b);//支出钱数; /*decimal c//剩余钱数 { get; set; }*/ } class Me : Ibankio { private static decimal count; public decimal have { get { return count; } set { if (count < 0) { Console.WriteLine("卡内余额不足"); } } } public void In(decimal a) { count += a; Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a); } public void Out(decimal b) { if (b < count) { count -= b; Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have); } else Console.WriteLine("余额不足!"); } /*public decimal c { get { return c; } set { if (have >= 0) { value = have; c = value; } } }*/ } class Program { static void Main(string[] args) { Ibankio wo = new Me(); wo.have = 1000; wo.In(10000); wo.Out(12000); } } }
卧_槽 2013-08-14
  • 打赏
  • 举报
回复
void In(decimal a);//存入钱数; void Out(decimal b);//支出钱数; 为明确标识前缀的都默认为private
  • 打赏
  • 举报
回复
把属性公开public decimal have{}
智商余额不足 2013-08-14
  • 打赏
  • 举报
回复
看调试错误啊...
  • 打赏
  • 举报
回复
引用 3 楼 hwenycocodq520 的回复:
[quote=引用 2 楼 u011634834 的回复:] [quote=引用 1 楼 hwenycocodq520 的回复:]

interface Ibankio
==>
public interface Ibankio
不好用啊~[/quote] 什么叫不好用?[/quote] 就是按照你的这两个解决方法调试了之后还是不能运行啊..
  • 打赏
  • 举报
回复
引用 6 楼 Saleayas 的回复:
在定义的时候,使用 public. 如果需要使用 private,那么使用 Interface.Method(...) 实现之 。
能说的再稍微详细点吗?
  • 打赏
  • 举报
回复
引用 5 楼 yuwenge 的回复:
接口中方法定义为private那么在子类中也只能是private。 就好像你爸爸的屁股上有颗痣,只有你们家人知道,不能遗传到你这,全世界都知道了。
我接口中没有private的方法啊?
非凡棒棒糖 2013-08-14
  • 打赏
  • 举报
回复
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; namespace Error { interface Ibankio { decimal have //已有钱数 { get; set; } void In(decimal a);//存入钱数; void Out(decimal b);//支出钱数; } class Me : Ibankio { private static decimal count; public decimal have { get { return count; } set { if (count < 0) { Console.WriteLine("卡内余额不足"); } count = value; } } public void In(decimal a) { count += a; Console.WriteLine("您账户里面现有{0}元,您存了{1}元钱", have, a); } public void Out(decimal b) { if (b < count) { count -= b; Console.WriteLine("您账户支出{0}元,剩余{1}元!", b, have); } else Console.WriteLine("余额不足!"); } /*public decimal c { get { return c; } set { if (have >= 0) { value = have; c = value; } } }*/ } class Program { static void Main(string[] args) { Ibankio wo = new Me(); int amount = 0; bool flag = true;//标志位,主要控制用户输入信息是否正确 string errorinput1="\\D"; string order=""; wo.have = 1000;//设置初始值 Console.WriteLine("------------------------欢迎使用自助存取款机!---------------------"); while (true) { while (flag) { Console.WriteLine("请选择操作:存钱请输入D,取钱请输入W,退出请输入Q"); string temp = Console.ReadLine(); if (temp.Equals("D") || temp.Equals("d") || temp.Equals("W") || temp.Equals("w") || temp.Equals("Q") || temp.Equals("q")) { flag = false; order = temp; } else Console.WriteLine("请检查您的输入:您输入的是{0},应为‘W’‘D’‘Q’中的一个!",temp); } flag = true; if (order.Equals("Q")||order.Equals("q")) break; Console.WriteLine(); while (flag) { Console.WriteLine("请输入金额并按回车键结束:"); string temp = Console.ReadLine(); flag=Regex.IsMatch(temp,errorinput1); if (!flag) amount = Convert.ToInt32(temp); else Console.WriteLine("您输入的是{0},应为数字!",temp); } flag = true; if (order.Equals("D") || order.Equals("d")) wo.In(amount); else if (order.Equals("W") || order.Equals("w")) wo.Out(amount); } Console.WriteLine("谢谢使用,再见!"); } } }
非凡棒棒糖 2013-08-14
  • 打赏
  • 举报
回复
楼主还在上学吧
加载更多回复(10)
购课请咨询qq2326321088 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台用java实现客服消息相关功能。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,要求有java基础,这部分课程很有难度,要求同学们认真听讲,有不的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧