0

これは私のコードです。その中でいくつかの基本的な継承を行おうとしていますが、displayメソッドが機能していないようです。コンストラクターと関係があると思うので、すでに「base(a、b、c);」を配置しました。そこの。:)

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

namespace School
{
    public class CollegeCourse
    {
        public CollegeCourse(String a, int b, double c)
        {
            dep = a;
             kors = b;
             cre = c;

        }
        public String dep;
        public int kors;
        public double cre;
        public double fee;

        public String getDep()
        { return dep; }

        public int getKors()
        { return kors; }
        public double getCre()
        { return cre; }

        public virtual void display()
        {
            fee = cre * 120;
            Console.WriteLine("Dep is : {0}\n"+
                " Course is : {1}\n Credit is : {2}\nFee is : {3}", 
                getDep(), getKors(), getCre(), fee);
        }
    }


    public class LabCourse : CollegeCourse
    {
        public LabCourse(String a, int b, double c)
            : base(a, b, c)
        {
             dep = a;
            kors = b;
             cre = c;

        }
        public override void display()
        {
            fee = cre * 120;
            Console.WriteLine(@"Dep is : {0}\n "+ 
                "Course is : {1}\n Credit is : {2}\nFee is : {3}", 
                dep, kors, cre, fee + 50);
        }
    }

    public class UseCourse
    {
        public static void teste()
        {
            String a;
            int b;
            double c;
            Console.WriteLine("Input Department:");
            a = Console.ReadLine();
            Console.WriteLine("Input Course:");
            b = Int16.Parse(Console.ReadLine());
            Console.WriteLine("Input Credits:");
            c = Double.Parse(Console.ReadLine());
            CollegeCourse aw = new CollegeCourse(a, b, c);
            LabCourse oy = new LabCourse(a, b, c);
            aw.display();
            oy.display();
            Console.ReadLine();
        }
    }

}
4

2 に答える 2

1

コンストラクターでは、(コンストラクター内で)新しいローカル変数を作成しており、クラスのプロパティを設定していません。

CollegeCourseコンストラクターで型定義を削除すると、問題が解決するはずです。

    public CollegeCourse(String a, int b, double c)
    {
        dep = a;
        kors = b;
        cre = c;

    }

また、LabCourseでは、LabCourseコンストラクターに渡されたパラメーターを使用して継承されたコンストラクターを呼び出すため、プロパティを設定する必要はありません。

    public LabCourse(String a, int b, double c)
        : base(a, b, c)
    {
    }
于 2012-07-29T02:18:47.037 に答える
0

コンストラクターでは、フィールドと同じ名前の3つの新しいローカル変数を作成しているため、これらは設定されていません。クラスを通常設定する方法の例を次に示します。

public class Shape
{
    private int _sides;
    public int Sides
    {
         get { return _sides; }
         set { _sides = value; }
    }

    public Shape(int sides)
    {
        Sides = sides;
    }
}

フィールドは通常プライベートであり、プロパティはパブリックであり、コンストラクターに渡されるパラメーターがプロパティまたはフィールドにどのように割り当てられるかに注意してください。

于 2012-07-29T02:22:37.070 に答える