본문 바로가기

멀티캠퍼스 풀스택 과정/Java의 정석55

자바의 정석4-3 내부클래스와 익명클래스 내부 클래스(inner class) 클래스 내에 선언된 클래스 -> 이 때 내부 클래스 B는 외부 클래스 A를 제외하고는 다른 클래스에서 잘 사용되지 않아야 함! -> B는 A의 내부클래스(inner class), A는 B를 감싸고 있는 외부 클래스(outer class) 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. (B에서 A의 객체 생성 없어도 A의 멤버 접근 가능) - 외부에 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.(캡슐화) public class InnerClass { public static void main(String[] args) { //BBB b = new BBB(); // 내부클래스는 다른 클래스에서 접근 불가능(AAA객체 생.. 2022. 1. 6.
자바의 정석4-2 인터페이스(interface), 디폴트와 static 메서드 인터페이스(interface) - 추상 메서드의 집합 - 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public) - 원래 인퍼테이스의 모든 메서드는 추상메서드이지만 static메서드와 디폴트 메서드(default method)가 추가 되었음 추상클래스와 인터페이스와의 차이 추상클래스: 일반클래스인데 추상 메서드도 같이 가지고 있음 인터페이스: 아무것도 없는데(멤버변수x) 추상 메서드만 가지고 있음.(iv, cv xx, 상수만) 추상클래스 -> 미완성 설계도, 인터페이스 -> 기본 설계도 인터페이스의 작성 interface 인터페이스이름 { public static final 타입 상수이름 = 값; // 상수 public abstract 메서드이름(매개변수목록); // 추상메서드 } 모든 멤버변.. 2022. 1. 5.
자바의 정석4-1 추상 클래스(abstract class)와 추상메서드 추상 클래스(abstract class) - 미완성 설게도. 미완성 메서드(추상메서드)를 갖고 있는 클래스 - 추상 클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. - 추상 클래스 -> iv(인스턴스 변수), 생성자, im(인스턴스 메서드), 추상 메서드 추상클래스의 구조 abstract class 클래스이름 { .... } abstract class Player { // 추상클래스(미완성클래스) abstract void play(int pos); // 추상메서드 abstract void stop(); // 추상메서드 } -> 다른 클래스 작성에 도움을 주기 위한 것이기 때문에 인스턴스 생성 불가하다! Player p.. 2022. 1. 5.
자바의 정석3-6 instanceof 연산자, 다형성의 장점(1,2) instanceof 연산자 - 참조변수의 형변환 가능여부 확인에 사용. 형변환이 가능하면 true로 반환 - 형 변환 전에 반드시 instanceof로 확인하고 형 변환 해야함! - instanceof연산자의 구조: 참조변수 instanceof 타입(클래스명) -> 인스턴스의 원래 기능을 모두 사용하려고 형변환을 하는데 Car타입의 참조변수(리모컨)인 c로는 Water( )를 호출할 수 없으니까 참조변수(리모컨)를 FireEngine타입으로 바꿔서 water( )를 호출함! void doWork(Car c) { // new Car(), new FireEngine(), new Ambulance() 모두 가능 if(c instanceof FireEngine) {// 1) 형변환이 가능한지 확인 FireEng.. 2022. 1. 5.
자바의 정석3-5 캡슐화(encapsulation)와 다형성(polymorphism) 캡슐화(encapsulation) 접근 제어자를 사용하는 이유 1) 외부로부터 클래스 내부에 선언된 데이터를 보호하기 위해서 2) 데이터 감추기(data hiding): 데이터가 유효한 값을 유지하도록, 비밀번호 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서 외부로부터 접근을 제한하는 것 이러한 데이터 감추기 -> 객체지향개념의 캡슐화!! 대입연산자를 사용하는 외부 접근을 막고 메서드를 통해서 iv에 간접 접근할 수 있게 함 접근제어자의 범위는 좁으면 좁을수록 좋음(class 내부에서만 쓰는 메서드를 굳이 public으로 할 필요 없음) 예제) 매개변수에 입력할 값에 제한을 걸어야 하는 경우(getter와 setter) private 자료형 변수명; // private 변수 선언 publi.. 2022. 1. 5.
자바의 정석3-4 제어자(static, final, abstract, 접근제어자) 제어자(modifier) 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 제어자의 분류 접근 제어자 public, protected, (default), private 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp -> default는 아무것도 안 붙이는 것을 의미함 - 하나의 대상에 여러 제어자를 같이 사용가능(접근 제어자는 하나만 네 개 중 하나!) -> 순서는 상관없지만 보통 접근제어자를 제일 왼쪽에 작성 -> class 앞에는 접근제어자만 가능 나머지는 상관없음 static – 클래스의, 공통적인 제어자 대상 의미 static 멤버변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수.. 2022. 1. 1.