c#
OOP(Object Oriented Programming) 객체지향 프로그래밍
특징
- Abstraction(추상화)
- Encapsulation(은닉성, 캡슐화)
- Inheritance (상속성)
- Polymorphism(다형성)
프로그래밍 절차
- 실세계 >[객체모델링]> 모델(UML) >[클래스정의]> 클래스 >[객체 생성]> 메모리로딩
- 객체지향 프로그램 다이어그램 UML(Unified modeling language)
클래스
- 구체 클래스(Consrete Class) - 모델링한 객체를 직접 생성할 수 있는 클래스
- 추상 클래스(Abstract Class) - 상속받은 하위클래스에서 오버라이딩 할수 있는 클래스
- 추상클래스는 반드시 상속을 받아야만 함으로, 추상 메서드를 가지지 않더라도 하위 클래스가 반드시 상속받도록 하기위해 일부로 추상클래스 선언하는 경우가 있음
- 추상클래스를 직접 생성하여 사용할 수 없음
- 인터페이즈 - 실제 객체를 모델링한 구체적인 코드 구현이 없고, 기능만 명시한 클래스
- 상수 - public static final
- 추상메서드 - public abstract
- 인터페이스는 ‘interface’키워드를 통하여 선언
- 클래스 선언시 ‘implements’키워드로 인터페이스 구현
- 인터페이스는 다중구현이 가능하며 구분자로 콤마 사용 (ex : String Class)
- public final class String extends Object implements
- Serializable, Comparable, CharSequence {}
- 인터페이스 구현 클래스는 모든 추상 메서드를 구현
- 일부 메서드만 구현하는 경우 추상 클래스로 선언
public interface 인터페이스 이름{
데이터타입 상수명 = 상수값;
리턴타입 메서드이름([인자(argument)]); //자동으로 추상메서드가 됨
}
//인터페이스 예시
public interface Vehicle{
int FORWARD = 1;
int BACKWARD = 2;
int LEFT = 3;
void moving(int direction, int speed);
void speedUp();
void speedDown();
}
interface Animal {} //인터페이스 선언
adctract class Pet implements Animal {} //인터페이스 구현(추상클래스)
class Dog extends Pet {} //클래스 상속
class Cat extends Pet {} //클래스 상속
// Animal, Pet은 직접 생성/사용할 수 없음
지시자
static
- 공유 변수
- 지역변수에 static을 사용할수 없음
- [접근제한자] static class 클래스이름() {}
final
- 확정 (변경불가)
- 변수에 사용 - 값을 변경할 수 없는 상수
- 메서드에 사용 - 오버라이딩 할 수 없음
- 클래스에 사용 - 자신을 확장하는 자손클래스를 정의하지 못함
- [접근제한자] final class 클래스이름() {}
- [접근제한자] (변수의 경우 이곳에 static이 들어가는 경우가 많음) final 데이터타입 상수이름 = 상수값;
abstract
- 추상 - 실체가 없기 때문에 변수에 사용불가능
- 추상클래스는 선언부만 있고 구현부가 없음, 서브 클래스에서 상속받아 기능구현 해야함
- 추상메서드를 한개라도 포함하고 있다면 추상클래스로 선언 해야함
public abstract 리턴타입 메서드이름([인자(argument)]);
public abstract class Car{
public abstract void moving(int direction, int speed);
}
public class Truck extends Car{
public void moving(int direction, int speed){
//구현부분
}
}