1. 아래는 간단한 C#코드입니다..
using System;
public class CClass
{
public void Print()
{
Console.Write("test\n");
}
};
public class CTest
{
public static void Main()
{
CClass obj = new CClass();
obj.Print();
}
};
저기에서요 CClass클래스를 선언할때 앞에 public를 붙였는데여..
제가 public를 빼고 테스트해본결과 같은결과가 나왔거든요??
아래처럼말이죠..
using System;
class CClass // 여기 선언부분에서 public를 뺐음..
{
public void Print()
{
Console.Write("test\n");
}
};
public class CTest
{
public static void Main()
{
CClass obj = new CClass();
obj.Print();
}
};
에러도 없고 같은 결과가 나왔는데.. 도대체 클래스선언부에 public을 붙이고 안붙이고의
차이가 뭡니까??
2. C#에서는 interface라는 개념을 도입하고 있는데여..
제가 볼때에는 추상클래스로도 충분히 대체가능하거든요??
그런데 왜 interface와 추상클래스를 따로 분리해서 개념을 만들었을까여??
이유좀 알려주세여..
C#에대한 몇가지 질문..
강아지의분노(211.244)
2005-07-06 12:53
추천 0
댓글 8
다른 게시글
-
훃아들 의견을 듣고싶어 [4]메피스토 | 05.07.06추천 0
-
못볼걸 보고 말았소 [5]4.2"ᕛ.. | 05.07.06추천 0
-
횽들 나좀 도와죠... [10]예비프로그.. | 05.07.06추천 0
-
게임화면 캡쳐 유틸좀 질문하겠소. [6]다운족 | 05.07.06추천 0
-
프로그래밍 겔러리? [13]빼그 | 05.07.06추천 0
-
자기가 존내 프로그래밍에 소질이 없다는 동생들 봐봐봐 [3]달려ㅆㅂ | 05.07.06추천 0
-
프로그래밍의 가장 근본적인 질문... [2]플밍 | 05.07.06추천 0
-
김천재 횽아 바바~ 놋북 백라이트 저렴하게 교체~ [2]현쓰 | 05.07.06추천 0
-
아나 신발 프겔 생겼다고 좋아했더니만 엉아 실망했다.. [9]maestrox | 05.07.06추천 0
-
으흫.. [3]고블린 | 05.07.06추천 0
PUBLIC, PRIVATE, FRIEND 등등은 접근자임. 왜 접근이 가능할까? 잘 생각해 보면 알텐데..
인터페이스는 왜 사용하는 지에 대해 생각해보면 되지 않겠습니까?
추상클래스는 다중 상속 불가.. 인터페이스는 다중 인터페이스 상속 지원.. 그러니까 성질이나 특성이 다른 객체라도 다른 공통 특성을 정의해서 하나의 채를 이용해서 서로다른 객체들의 공통기능을 뽑아쓸수 있다는 소리야.. 객체의 다형성을 구현하는데 필수적이지.. 복잡한 계층구조의 프로그램 몇번 만들다 보면 대충 감이 올거야.. 책에 있는거 뷁번 읽어본들 같은소리고.. 인터페이스는 몸으로 느껴야되..ㅋ
예제라도 한번보면 감이올텐데.. "K교수의 객체지향 이야기" 강추..
클래스: 완전 데이타형 추상클래스: 중간 데이타형, 인터페이스:완전 추상 데이타 Can you understand?
추상클래스와 인터페이스 모두 Java의 다중 상속의 효과를 내기 위해 만들어진 별도의 개념이나(C++과 달리 JAVA는 동시 다중 상속을 허용안함) 그런 개념에서 한발짝 더 나아가 사용자가 데이타 형을 단계별로 정의할 수 있게끔 만들게 할수도 있음. Class는 그 자체만으로 완전한 데이타형이지만, abstract Class는 일부분만 완변한 데이타구조이지만, 또다른 일부는 완전하지 못하는 중간형 데이타라오. 또한 인터페이스는 100% 구현이 안된 껍질 데이타형.
public을 붙이냐 마냐 차이는 안붙히면 자동으로 public으로 처리될껍니다.
인터페이스는 개념상 다중 상속의 효과를 내기 위해 만들어진 개념부터 시작된 것이 아니라, 이름 그대로 개체간 통신 수단을 위해서 만들어진 것이 맞습니다. 애당초 다중 상속을 대체할 목적으로 만들었다면 그렇게 하기보다는 아예 클래스 자체를 다중상속되게 만들었겠죠. 실제로 실무에서도 쓰다 보면 다중상속 목적으로 쓰기보다는 개체간 통신의 형식을 정의하는 데 많이 씁니다. 오히려 다중상속을 커버하는 개념으로는 언어에서 지원하는 것으로 커버하기보다는 컴포짓 패턴 등으로 해결하게 되는 경우가 많습니다.