본문 바로가기

java/객체지향 프로그래밍10

인터페이스 인터페이스란?인터페이스는 일종의 추상클래스! 하지만 추상클래스처럼 추상 메서드를 가지지만 추상 클래스보다 추상화 정도가 높아서 몸통을 갖춘 일반 메서드나 멤버변수를 구성원으로 가질 수 없음오직 추상 메서드나 상수만 멤버로 가질 수 있음추상클래스 -> 미완성 설계도 , 인터페이스 -> 기본 설계☞ 주로 동작(기능)을 약속하고, 여러 객체가 동일한 동작을 하도록 강제할 때 사용인터페이스의 작성interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름 (매개변수목록);}=> 인터페이스의 멤버들의 제약사항모든 멤버변수는 public static final이여야 함 (생략 가능)모든 메서드는 public abstract 이어야.. 2025. 4. 9.
추상클래스 추상클래스클래스를 설계도에 비유한다면 추상클래스는 미완성 설계도!미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로는 인스턴스 생성 불가능=> 상속을 통해서 자손클래스에 의해서만 완성 추상클래스에 키워드 'abstract'를 붙이기만 하면 됨 ☞ 공통 기능은 구현하고, 구체적인 동작은 자식이 정의하도록 강제하는 데 쓰임!!(일부 구현 + 일부 강제) 추상메서드선언부만 작성하고 구현부를 작성하지 않은 메서드-> 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 , 실제 내용은 상속받는 클래스에서 구현하도록 비워둠 템플릿 메서드 패턴 -> 추상클래스를 이용해서 만듦/* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명 */abstract 리턴타입 메서드이름();  추상 클래스의 .. 2025. 4. 9.
제어자 제어자제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여함접근 제어자public, protected, default, private (네 가지 중 하나만 선택해서 사용 가능)그 외static, final, abstract, native, transient, synchronized, volatile, strictfp접근 제어자 --> 캡슐화 하려고 ( 1. data보호, 2. 불필요한 부분 감추려고)  static클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. -> 하나의 변수를 모든 인스턴스가 공유하기 때문에static이 붙은 멤버변수와 메서드, 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용 가능하다!s.. 2025. 4. 8.
다형성 다형성이란 ?하나의 참조변수로 여러 종류 객체를 다룰 수 있는 능력Tv t = new Tv(); //가능Tv t = new CaptionTv(); //Tv가 조상 클래스, CaptionTv가 자식 클래스일 경우 가능CaptionTv c = new Tv(); //반대로는 불가능=> 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 함 참조변수의 형변환조상, 자손 클래스끼리 형변환 가능! 형제 클래스끼리는 형변환 불가능class Car { String color; int door; void drive() { //운전하는 기능 } void stop() { //멈추는 기능 }}class FireEngine extends Car { .. 2025. 4. 8.
package와 import 패키지패키지 : 클래스의 묶음 -> 서로 관련있는 클래스들을 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다!같은 이름의 클래스일지라도 다른 패키지에 존재하는 것이 가능해서 자신만의 패키지 체계를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있음.클래스패스(class path) : 클래스 파일의 위치 패키지의 선언클래스나 인터페이스의 소스파일(.java)의 맨 위에 적으면 됨package 패키지명;  import문다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 함import문에서 사용하고자 하는 클래스의 패키지명을 미리 명시해주면 소스코드에서 사용할 때 클래스마다 패키지명 생략해도 됨 일반적인 소스파일(*.java)의 구성의 .. 2025. 4. 8.
오버라이딩 오버라이딩이란?조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것--> 실행중에 변경 가능(유연한데 기능 떨어짐) 오버라이딩의 조건선언부 일치자손 클래스에서 오버라이딩하는메서드는 조상 클래스의 메서드와  - 이름이 같아야 함- 매개변수가 같아야 함- 반환타입이 같아야 함접근제어부 조상 클래스의 메서드보다 좁은 범위로 변경 x조상 클래스의 메서드보다 많은 수의 예외x오버로딩 vs 오버라이딩오버로딩 : 이름 , 상속과 관계 x , 기존에 없는 새로운 메서드를 정의하는 것오버라이딩: 선언부 , 상속과 관련있음 , 상속받은 메서드의 내용을 변경하는 것  superthis쓰는 이유 : this와 iv 구분하려고super쓰는 이유: 조상멤버와 구분public class SuperTest { public s.. 2025. 4. 8.