C#.NET:abstract

classの外部に公開(public)したくないメソッドがある場合はabstractを使用すればいい。
publicのメソッドのみであれば、interfaceを使用した方がいい。
interfaceであれば複数の継承が可能なので柔軟。

using System.Windows;

namespace WpfApp
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public MainWindow()
        {
            // コンポーネントの初期化
            InitializeComponent();

            Test test = new Test();
            test.Proc1("WOW");
            MessageBox.Show(test.Proc3("NON"));
        }

        class Test : AbstractClass
        {
            /// <summary>
            /// 抽象メソッドProc2の実際の処理を定義
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            protected override string Proc2(string val)
            {
                return val + "!!!";
            }

            /// <summary>
            /// 抽象メソッドProc3の実際の処理を定義
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public override string Proc3(string val)
            {
                return val + "???";
            }
        }

        /// <summary>
        /// abstract class
        /// </summary>
        abstract class AbstractClass
        {
            public void Proc1(string val)
            {
                MessageBox.Show(Proc2(val));
            }

            /// <summary>
            /// class外部に公開したくないメソッド
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            protected abstract string Proc2(string val);

            /// <summary>
            /// class外部に公開したいメソッド
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public abstract string Proc3(string val);
        }
    }
}

最終更新:2014年01月31日 23:18
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル