전체 글
-
[Java 자바] 8. 인터페이스 ② 사용 방법, 인터페이스 상속, 디폴트 메소드Programming/Java 2022. 8. 9. 20:50
8-4. 인터페이스 사용 인터페이스로 구현 객체를 사용하려면 인터페이스 변수를 선언하고 구현 객체를 대입해야 함 8-4-1. 추상 메소드 사용 구현 객체가 인터페이스 타입에 대입되면 인터페이스에 선언된 추상 메소드를 개발 코드에서 호출할 수 있음. 이 때, 메소드는 구현 객체에서 선언된 메소드가 자동으로 실행됨. public class RemoteControlTest { public static void main(String[] args) { RemoteControl rc = new Television(); rc.turnOn();// TV가 켜집니다. } } 8-4-2. 디폴트 메소드 사용 - 디폴트 메소드는 인터페이스에 선언되지만, 인터페이스를 통해 바로 사용은 불가능함 - 보통 인터페이스의 모든 구현..
-
[Java 자바] 8. 인터페이스 ① 선언과 구현Programming/Java 2022. 8. 9. 00:24
8-1. 인터페이스의 역할 인터페이스: 객체의 사용 방법을 정의한 타입 - 클래스는 다중 상속이 불가능하지만, 인터페이스는 다중 상속이 가능함 - 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스 - 오로지 추상메소드와 상수만 포함 가능 8-2. 인터페이스 선언 8-2-1. 인터페이스 선언 [접근제한자] interface 인터페이스명 { // 상수, 선언되는 변수는 모두 상수로 적용되기 때문에 public static final과 같게 취급 데이터타입 상수명 = 값; (public static final)데이터타입 상수명 = 값; // 메소드, 선언되는 메소드는 모두 추상 메소드로 적용되기 때문에 public abstract와 같게 ..
-
[Java 자바] 7. 상속 ③ 추상클래스 (Abstract Class)Programming/Java 2022. 8. 8. 21:45
7-8. 추상 클래스 7-8-1. 추상 클래스의 개념 자식클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드로 선언부만 존재하며, 구현부는 작성되어 있지 않음 - 이 구현부를 자식클래스에서 오버라이딩해서 사용 - 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위해 사용 - 상속 전용 클래스 7-8-2. 추상 클래스의 용도 1) 실체 클래스들의 공통된 필드와 메소드의 이름 통일 목적 - 실체 클래스를 설계하는 사람이 여럿일 경우, 클래스마다 필드와 메소드가 제각기 다른 이름을 가질 수 있음 (ex. 소유자의 이름을 저장하는 필드를 Telephone에서는 owner, Smartphone에서는 user 라고 할 수 있음) 2) 실체 클래스를 작성할 때 시간을 절약 - 공통적인 필드와 메소드..
-
[Java 자바] 7. 상속 ② 타입 변환과 다형성, instanceofProgramming/Java 2022. 8. 7. 23:50
7-7. 타입 변환과 다형성 7-7-1 . 자동 타입 변환 (Promotion) 실행 도중에 자동적으로 타입 변환이 일어나는 것 - 자식은 부모의 특징과 기능을 상속 받기 때문에 부모와 동일하게 취급될 수 있음 - 아래 코드의 경우, Child클래스로 Child객체를 생성하고 이것을 Parent참조변수에 대입하면 자동 타입 변환이 일어남 - 바로 위의 부모가 아니더라도, 상속 계층에서 상위 타입이라면 자동 타입변환이 일어날 수 있음 Child c = new Child(); Parent p = c; c == p // true - 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근 가능 - 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로만 한정 -..
-
[Java 자바] 7. 상속 ① 클래스 상속, super, 메소드 오버라이딩Programming/Java 2022. 8. 7. 17:31
7-1. 상속이란? 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 - 기존에 정의되어 있던 클래스: 부모 클래스(parent class) == 상위 클래스(super class) == 기초 클래스(base class) - 상속을 통해 새롭게 정의된 클래스: 자식클래스(child class) == 하위 클래스(sub class) == 파생 클래스(derived class) - 상속은 코드의 중복을 줄여주고 개발시간 단축을 통해 효율성을 높일 수 있음 - 접근제한자에 따라 상속을 받아 접근할 수 있는 필드와 메소드는 달라질 수 있음 (부모클래스의 private 필드, 메소드는 접근 불가) 7-2. 클래스 상속 extends 를 통해 부모클래스 상속 가능 - 다중 상속은 불가 //Pa..
-
[Java 자바] 6. 클래스 ⑥ 접근 제한자 (public, protected, default, private), Getter/Setter, 어노테이션Programming/Java 2022. 7. 31. 16:29
6-13. 접근 제한자 클래스, 필드, 메서드 등의 선언부에서 접근 허용 범위를 지정하는 역할의 키워드 [ 접근 제한자의 종류 ] 접근 제한자 적용 대상 클래스 내부 동일 패키지 상속(타 패키지) 다른 클래스 public 클래스, 필드, 생성자, 메소드 접근 가능 접근 가능 접근 가능 접근 가능 protected 필드, 생성자, 메소드 접근 가능 접근 가능 접근 가능 접근 불가능 (default) 클래스, 필드, 생성자, 메소드 접근 가능 접근 가능 접근 불가능 접근 불가능 private 필드, 생성자, 메소드 접근 가능 접근 불가능 접근 불가능 접근 불가능 6-13-1. 클래스의 접근 제한 클래스에 사용 가능한 접근 제한자는 public, (default) 두 가지 - 같은 패키지 내에서만 사용할 것인..
-
[Java 자바] 6. 클래스 ⑤ 패키지Programming/Java 2022. 7. 31. 15:38
6-12. 패키지 폴더를 만들어 파일을 저장 관리하듯, 패키지를 만들어 클래스를 저장 관리 - 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 함 (클래스명이 같더라도 패키지가 다르면 다른 클래스로 인식) - 클래스 이동시에는 패키지도 함께 이동해야 정상적으로 사용 가능 6-12-1. 패키지 선언 패키지는 클래스 컴파일 과정에서 자동적으로 생성되는 폴더 package 상위패키지.하위패키지; public class ClassName {...} [ 패키지 Naming 규칙 ] 숫자로 시작해서는 안 되고, _, $ 를 제외한 특수문자는 사용 불가 java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용 불가 (java.util) 모두 소문자로 작성하는 것이 관례 - 패키지간 중복 방지를 위해 회..
-
[Java 자바] 6. 클래스 ④ this, static, final, static finalProgramming/Java 2022. 7. 31. 15:00
6-9. 인스턴스 멤버와 this - 인스턴스 멤버: 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드 - 객체 내부에서 인스턴스 멤버에 접근하기 위해 this 사용 public class Car { String model; int speed; Car(String model) { this.model = model; } void setSpeed(int speed) { this.speed = speed; } void run() { for(int i = 0; i