Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > interface


Автор: blackwitcher 10.6.2015, 14:52
Bсем привет, недавно начал изучать C# и интересует вопрос, правильно ли я реализовал интерфейс? Всем спасибо smile 
Код

Код

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

namespace test15
{
    abstract class Animal
    {
        string petname, breed;
        public string PetName
        {
            get
            {
                return petname;
            }
            set
            {
                petname = value;
            }
        }
        public string Breed
        {
            get
            {
                return breed;
            }
            set
            {
                breed = value;
            }
        }
               
        public interface IName
        {
            void Show();
        }
    }
}



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

namespace test15
{
    class Cat:Animal,test15.Animal.IName
    {
        void IName.Show()
        {
            Console.WriteLine("I am {0} and I am {1}", PetName = "dog", Breed = "glad");
        }
    }
}




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

namespace test15
{
    class Dog:Animal,test15.Animal.IName
    {
        void IName.Show()
        {
            Console.WriteLine("I am {0} and I am {1}", PetName = "cat", Breed = "hungry");
        }
    }
}



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

namespace test15
{
    class Program
    {
        static void Main(string[] args)
        {
            Dog myDog = new Dog();
            Cat myCat = new Cat();
            Animal.IName my;
            my = (Animal.IName)myDog;
            my.Show();
            my = (Animal.IName)myCat;
            my.Show();
            Console.ReadKey();
        }
    }
}



Если плохо сбросил, то извините, еще не разобрался на форуме

Автор: Экскалупатор 10.6.2015, 15:00
в принципе да, похоже на правду, только методы в реализациях должны быть public.


Цитата(blackwitcher @  10.6.2015,  13:52 Найти цитируемый пост)
Если плохо сбросил, то извините, еще не разобрался на форуме 

отредактируйте сообщение и уберите двойное оборачивание в код.

Автор: blackwitcher 10.6.2015, 16:52
Цитата
Экскалупатор
в принципе да, похоже на правду, только методы в реализациях должны быть public.


если можно, то более подробно, а то полностью не понял smile 

Автор: Экскалупатор 10.6.2015, 21:00
не про методы это я погорячился.
Код

        void IName.Show()
        {
            Console.WriteLine("I am {0} and I am {1}", PetName = "dog", Breed = "glad");
        }

можно написать так, но это ничего не меняет.
Код

        public void Show()
        {
            Console.WriteLine("I am {0} and I am {1}", PetName = "dog", Breed = "glad");
        }


и по хорошему интерфейс не должен быть внутри класса, вообще классы внутри классов это зло(ИМХО).

Код

            Animal.IName myDog = new Dog();
            Animal.IName myCat = new Cat();
            
            myDog.Show();
            myCat.Show();
            Console.ReadKey();

Автор: blackwitcher 10.6.2015, 21:25
Спасибо большое, теперь я разобрался smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)