Python/Jabbok

2021. 03. 08.

씬프 2021. 3. 8. 15:03
반응형

객체지향프로그래밍 (OOP)

 

JAVA에서의 객체 지향 프로그래밍 (OOP)는
서로 연관된 변수와 메소드를 하나의 클래스로 묶어
사용하기 편하고, 이해하기 쉬운 코드로 만드는 것 같음.

static은 해당 변수나 메소드가 클래스로 사용되도록 함.

instance는 클래스를 통해 생성된 복제품과 같음.
static한 변수나 메소드에 접근할 수 있으나,
해당 값을 수정할 경우 class 자체에서 값이 수정됨을 주의.

new 키워드로 instance를 선언할 수 있고,
비슷한 기능이지만 세부적으로 다른 것을 선언하고 사용하기에 편함.
클래스의 상태가 계속 바뀌어야 해서 얽힐 수 있는 경우도 인스턴스를 활용하면 좋음.

무조건 instance의 변수나 메소드로 하기보다
static을 사용해 class의 것으로 두는 것은
메모리에 대한 이익, 그리고 변동이 없는 변수에 대한 고정성을 위함.

 

상속


부모의 것을 상속받는다. 자식은 부모보다 덩치가 크다.
Overriding : 부모의 메소드를 자식이 새로이 덮어쓰기 했다.
Overloading : 기본적으로 상속과는 상관없음. 기존의 같은 이름의 메소드에
파라미터를 바꿔서 사용함. 메소드 호출시 파라미터에 따라 메소드를 결정함.
this : 클래스 자기 자신을 나타냄.
super : 부모 클래스의 것을 참조함.
Polymorphism : 다형성, 자식클래스를 부모클래스로써 동작하도록 하는;
같은 자료형에 여러가지 객체를 대입하여 다양한 결과를 얻어내는 성질;

public, default, protected, private : 사용자에게 접근권한 설정 (AC)
(private < default < protected < public)
 class, package, 외부 package 상속, all
Final : 다른 사람이 더 이상 상속X, 오버라이딩 못하게, 완전 막는;
Abstract : 특정한 메소드를 꼭 정의하도록 강제하고 싶을 때;

interface? 규제. 규제 속에서 자유롭게.
메소드의 이름, 리턴형식, 파라미터를 적는다. 하지만 세부 내용은 없다.
class {{class name}} implements {{interface name}} { }
해당 클래스는 인터페이스에 정의된 메소드를 정의해야 함.

package?
같은 이름의 클래스가 존재하기 위해, 각각 클래스를 서로 다른 클래스에 담아서 사용
클래스가 많아지면 정리하기 위한 package.