추상메소드란? 
 
 
 
abstract 로 사용되며

추상메소드는 구현 할 수 없다. 코드 자체가 추상적인 존재이기 때문에 이것을 호출 해서 사용한다는 일은 불가능하다.
 
 
 
추상 메소드는 추상클래스 안에서만 선언이 가능하며 추상클래스의 객체를 만들 수가 없다.
 
 
 
그럼에도 사용하는 이유는

 
 
파생될 클래스들이 어떤 메소드를 갖춰야 하는지를 알려주는 역할을 한다.
 
 
 
using System;
 


abstract class Computer  

{
 
    public void Graphic()
 
    {
 
        Console.WriteLine("Graphic OK.");       

    }
 


    public abstract void Network(); 

}
 


class NewComputer : Computer 

{
 
    public override void Network()

    {
 
        Console.WriteLine("Network OK.");       

    }
 

class Override
 
{
 
    public static void Main()
 
    {
 
        // Computer c = new Computer();

        // Abstract 클래스는인스턴스를만들지못합니다.
 
        Computer c = new NewComputer();
 
        c.Graphic();
 
        c.Network();
 
    }
}

 
 
 
 
 
 
 
 
 
가상 메소드란?
 
 
 
virtual 로 사용되며 이 키워드는 메소드 뿐 아니라 property 에도 사용 할 수 있다.

virtual과 abstract 의 차이는 추상메소드는 구현을 하지 않고 선언만 하는 것에 반해

가상메소드는 구현을 할 수 있고 일반 클래스에 선언 할 수 있다는 것이다.
 
 
 
사실 virtual 이 붙는것 외에 일반 메소드와 동일 하다.
 
 
 
가상 메소드를 오버라이드 할때는 추상메소드와 마찬가지로 override 를 사용해야 한다.
 
 
 
using System;
 


class Computer 

{
 
    public void Graphic()
 
    {
 
        Console.WriteLine("Graphic OK.");       

    }
 


    public virtual void Network()   

    {
 
        Console.WriteLine("old Network OK.");
 
    }
 
}

 

class NewComputer : Computer    

{
 
    public override void Network()
 
    {
 
        Console.WriteLine("new Network OK.");       

    }
 
}  

class Override
 
{
 
    public static void Main()
 
    {
 
        Computer c = new Computer();
 
        c.Graphic();
 
        c.Network();  

 

        Computer n = new NewComputer();     

        n.Graphic();
 
        n.Network();
 
    }
 
}

 

 

Posted by 요지
,