728x90
반응형

전공/객체지향프로그래밍 17

[객체지향프로그래밍][Java] 인터페이스의 구성 요소 심화 내용

자바 인터페이스의 구성 요소 (취소선 부분 생략 가능) 상수 public static final int X = 10; int X; int X = 10;은 public static final int X = 10;이 생략된 형태로 X라는 상수를 정의한 것이지만, int X;는 변수를 선언하는 것으로 해석되기 때문에 컴파일 에러가 발생 메소드 public abstract (abstract public) 추상 메소드 함수 몸통 부분 없음 사용하려면 반드시 함수 몸체 구현 필요 public default (default public) 인터페이스 내에서 메소드 정의({ } 부분이 필요함, 정의 안하면 컴파일 에러) 인터페이스 상속하여 default 메소드 사용 가능 오버라이딩 가능 Interface A -> Int..

[객체지향프로그래밍][Java] 상속 3 (추상 메소드, 추상 클래스, 인터페이스)

추상 메소드 선언되어 있으나 구현되어 있지 않은 메소드 public abstract String getName(); public abstract void setName(String s); 추상 메소드는 서브 클래스에서 오버라이딩하여 구현해야 함 추상 클래스 추상 메소드를 하나라도 가진 클래스 → 클래스 앞에 반드시 abstract라고 선언해야 함 추상 메소드가 하나도 없지만 abstract로 선언된 클래스 추상 클래스는 객체 생성 불가 추상 클래스의 상속 1. 추상 클래스의 단독 상속 추상 클래스를 상속받아 메소드를 구현하지 않으면 추상 클래스 됨 서브 클래스도 abstract로 선언해야 함 abstract class Shape { // 추상 클래스 public Shape() { } public void..

[객체지향프로그래밍][Java] 상속 2 (오버라이딩)

메소드 오버라이딩(Method Overriding) 슈퍼 클래스의 메소드를 서브 클래스에서 재정의 슈퍼 클래스 메소드의 이름, 매개변수 타입 및 개수, 리턴 타입 등 모든 것 동일하게 작성 메소드 무시하기, 덮어쓰기 동적 바인딩 발생 - 서브 클래스에 오버라이딩 된 메소드가 무조건 실행되는 동적 바인딩 메소드 오버라이딩 사례 class Shape { public void draw() { System.out.println("Shape"); } } class Line extends Shape { public void draw() { //오버라이딩 System.out.println("Line"); } } class Rect extends Shape { public void draw() { //오버라이딩 Sys..

[객체지향프로그래밍][Java] 상속 1 (객체 생성, 접근 지정자, 업캐스팅, 다운캐스팅, instanceof 연산자)

객체지향의 상속 부모클래스에 만들어진 필드, 메소드를 자식클래스가 물려받음 부모의 생물학적 특성을 물려받는 유전과 유사 상속을 통해 간결한 자식 클래스 작성 동일한 특성을 재정의할 필요가 없어 자식클래스가 간결해짐 장점 클래스의 간결화 - 멤버의 중복 작성 불필요 클래스 관리 용이 - 클래스들의 계층적 분류 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이 - 새로운 클래스의 작성 속도 빠름 자바의 상속과 객체 상속 선언 - extends 키워드 사용 -> 슈퍼 클래스를 확장한다는 개념 부모 클래스 자식 클래스 슈퍼 클래스 서브 클래스 클래스 상속 만들기 - Point와 ColorPoint 클래스 class Point { private int x, y; //한 점을 구성하는 x, y 좌표 publi..

[객체지향프로그래밍][Java] 클래스와 객체 2 (접근 지정자, static, final)

접근지정자 public: 어떤 클래스에서든 접근 가능 protected: 같은 패키지에 있는 다른 클래스나, 상속받은 자식 클래스에서 접근 가능 private: 해당 클래스 내부에서만 접근 가능 default(package-private): 같은 패키지 내에서만 접근 가능, 따로 접근 지정하지 않았을 경우 자동으로 지정 접근지정자는 객체지향 프로그래밍에서 캡슐화를 구현 클래스 내부 상태와 행동을 적절히 제어 코드의 유지 보수성과 재사용성 향상 클래스 접근 지정 public class World { // public 클래스 } 멤버 접근 지정 멤버에 접근하는 클래스 private 디폴트 접근 지정 protected public 같은 패키지의 클래스 x o o o 다른 패키지의 클래스 x x x o 접근 가..

[객체지향프로그래밍][Java] 클래스와 객체 1 (클래스의 구성, 생성자, this, 객체 배열, 오버로딩, 가비지 컬렉션)

클래스의 구성 public class Circle { // public: 접근 권한, class 클래스 선언, Circle 클래스 이름 public int radius; // 원의 반지름 필드 public String name; // 원의 이름 필드 public Circle() { //원의 생성자 메소드 } public double getArea() { // 원의 면적 계산 메소드 return 3.14*radius*radius; } 클래스 선언, class Circle class 키워드로 선언 클래스는 { } 안에 모든 필드와 메소드 구현 class Circle은 Circle 이름의 클래스 선언 클래스 접근 권한, public -> 다른 클래스들에서 Circle 클래스를 사용하거나 접근할 수 있음을 선언..

[객체지향프로그래밍] 이론

객체의 특징 특징 예시 크기 작은 물체, 큰 물체 형태 원, 사각형, 삼각형 등 색상 빨강, 파랑 노랑 등 무게 가벼운 물체, 무거운 물체 재질 나무, 금속, 플라스틱, 유리 등 기능 한 가지 기능, 여러 가지 기능 용도 가구, 전자제품, 운송 수단 등 위치 바닥에 놓인 물체, 책상 위에 놓인 물체, 벽에 걸린 물체 등 관계 서로 붙어 있는 물체, 쌓여 있는 물체, 연결된 물체 등 변화 녹아 없어지는 물체, 커지는 물체, 움직이는 물체 등 객체 지향의 핵심 개념 캡슐화 데이터와 데이터를 처리하는 메소드를 하나의 논리적인 단위로 묶는 것 데이터의 접근을 제한, 메소드를 통해 안전하게 데이터를 처리 자동차 클래스에서 앤진, 바퀴, 핸들 등의 상태 주행, 정지, 좌/우 회전 등의 행동 캡슐화하여 외부에서 직접..

728x90
반응형