[구로디지털단지역,가산디지털,C#교육여기에서합니다. 오라클자바커뮤니티에서는 닷넷,C#교육도 진행합니다. 실무전문C#,ASP.NET,ADO.NET학원교육추천합니다.]닷넷, C#, 인터페이스, 추상클래스, 닷넷클래스, 닷넷교육,닷넷객체지향
인터페이스와 추상클래스
비슷한 점 : 모두 파생 클래스가 상속 할 멤버들을 담고 있다. 그 자체가 직접적으로 인스턴스화 될 수 없다.
차이점 : 주된 차이는 다중 상속의 여부이다. 파생된 클래스는 오직 한 개의 기반 클래스만을 상속 할 수 있다, 따라서 한 클래스가 추상 클래스(Abstract Class)를 상속하는 경우에는 단 하나의 추상클래스만 직접적으로 상속할 수 있고 반면 인터페이스(Interface)는 여러 개를 한꺼번에 직접 상속 할 수 있다. 그러나 이 같은 차이는 커다란 차이는 아니며 어떤 경우든 비슷하게 구현이 가능하다.
추상클래스는 추상멤버(구현 코드가 없으며 상속 받은 파생 클래스가 반드시 구현 해야 한다.) 와 비 추상멤버(구현 코드를 가지며 받은 파생 클래스에서 재정의 될 수 있도록 가상으로 설정 할 수 있다.)를 모두 가질 수 있다. 반면 인터페이스의 멤버들은 코드를 가지지 않으며 반드시 그 인터페이스를 사용하는 클래스에서 구현 되어 져야 한다. 간단히 정리하면 인터페이스는 추상 멤버만 가진다는 것이다. 그리고 인터페이스의 멤버들은 모두 public이나 추상클래스의 경우 private member(전용 멤버는 추상멤버는 아니다.), protected member, internal member 등 모두 가능하다. 또한 인터페이스는 필드, 생성자, 정적 멤버, 상수를 가질 수 없다.
따라서 인터ㅔ이스와 추상클래스는 비슷해 보이지만 사실은 매우 다른 쓰임새를 위해 고안된 것이다. 추상 클래스는 어떤 공통의 특성을 공유하는 일련의 객체의 기반 클래스로 쓰이는 것이고 인터페이스는 기본적인 수준은 다르지만 그래도 일부의 기능이 비슷한 클래스에 쓰이는 것이다.
예를 들어 기차라는 것에 대해 생각해 보자. 기차(바퀴종류, 엔진종류, 운행 한다 등의 기본 멤버를 가진다)에는 승객전송용 기차, 화물 전용기차 기차 등이 있다고 하자. 세분화된 이름이 없는 일반적인 기차라는 것은 존재 할 수 없다고 하면 실제 기차를 만들기 위해서 기차라는 클래스는 추상클래스이어야 한다. 결국 실제 기차를 만들려면 기차라는 공통점을 가지는 좀더 세분화된 파생 클래스를 만들어야 한다. 이번엔 자동차를 보도록 하자. 자동차라는 것을 추상 클래스로 두고 각각의 세분화된 자동차(아반테, 화물차)들은 이 클래스로 공통적인 부분을 상속 받고 일반적인 , 즉 이름이 없는 자동차는 존재하지 않으므로 이 자동차 클래스는 추상 클래스가 되어야 한다.
위의 기차와 자동차라는 클래스를 이상에서와 같이 정의 하였다면 이 들의 상속 구조와는 별개로 어떠한 공통적인 특성을 공유 할 수 있는 것이다. 그 공유되는 특성을 보면 승객전용 기차와 아반테의 경우는 승객을 운송 할 수 있는 행위를 가진다고 볼 수 있다. 그래서 “승객전송” 이라는 인터페이스를 만들어 “승객을 수송하다()”라는 메소드를 정의 할 수 으며 화물 전용 기차와 화물차를 위해 “화물을 수송하다()” 라는 메소드를 정의 할 수 있다.
[과제]
이상의 기차와 자동차에 관련된 부분을 이해 한 후 추상 클래스, 인터페이스, 상속, 다형성의 예를 구현하여 보시기 바랍니다.(Visual Studio를 이용하여 작성 하세요…)
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(6/30)[기업100%환급]안드로이드개발자과정
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
평일야간(19:00~21:50) 개강
(7/01)안드로이드개발자과정
(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/02)Spring3.X, MyBatis, Hibernate실무과정
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/03)웹퍼블리싱 마스터
(7/15)SQL기초에서실무까지
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/05)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
주말저녁(18:30~22:20) 개강
(7/19)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(6/30)[기업100%환급]안드로이드개발자과정
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
평일야간(19:00~21:50) 개강
(7/01)안드로이드개발자과정
(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/02)Spring3.X, MyBatis, Hibernate실무과정
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/03)웹퍼블리싱 마스터
(7/15)SQL기초에서실무까지
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/05)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
주말저녁(18:30~22:20) 개강
(7/19)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
댓글 없음:
댓글 쓰기