Programming42 6장. 패키지와 활용 #1 패키지 패키지 1. 패키지 : 서로 관련 있는 클래스나 인터페이스의 컴파일된 클래스 파일들을 한 곳에 묶어 놓은 것 경로에 따라 구분되기 때문에 클래스의 이름이 중복되어도 구별이 가능하다. import문으로 패키지를 가져와서 해당 패키지의 클래스들을 사용할 수 있다. 일반적으로 JDK 패키지는 소문자, 클래스는 대문자로 시작한다. ex) import java.util.*; import java.util.Scanner; 2. 패키지 만들기 지정 클래스를 패키지에 저장하는 방법 ex) //Tools 클래스를 UserInterface 패키지에 저장, 패키지 선언문은 반드시 첫 줄에 써야한다. //경로명은 UserInterface.Tools package UserInterface; public class Tools {.. 2020. 6. 14. 5장. 상속 #6 인터페이스 vs 추상클래스 추상클래스(Abstract) vs 인터페이스(Interface) 두가지 개념 모두 추상 메소드를 선언만 해두고 정의는 사용자에게 강제로 맡기는 방식으로, 헷갈릴 수 있는 개념이다. 하지만 둘은 명확한 차이를 갖고 있다. 사용법과 그 생김새에 대하여 차이점을 알아보자. #추상클래스 : 추상 메소드가 하나 또는 그 이상 포함된 클래스 #인터페이스 : 인터페이스 내의 모든 메소드들은 빈 껍데기만 있는 메소드 추상클래스 추상 클래스는 추상 메소드를 하나 이상 갖고 있는 클래스를 말한다. #추상메소드는 abstract 키워드를 사용하여 정의하며, 그 내부의 내용은 정의되어 있지 않다. 만약 추상메소드를 하나라도 포함하고 있는 추상 클래스라면, 이 클래스 역시 abstract 키워드를 사용하여 표시해 주어야 한다... 2020. 6. 14. 5장. 상속 #4 추상 메소드/클래스 추상 메소드, 클래스(abstract method, class) 1. 추상 메소드 (abstract method) : 선언되어있고 구현 안 된 메소드 형식 : (접근제한자) abstract (반환타입) Method1(); 추상메소드는 서브클래스에서 오버라이딩으로 구현. 추상 클래스는 비워둔다. 2. 추상 클래스 (abstract class) 형식 : (접근제한자) abstract class Class1 {} 추상 클래스는 인스턴스 생성 불가능 종류 i) 추상 메소드를 하나라도 가진 클래스 ex) abstract class Shape { public Shape() {} public void paint() { draw(); } abstract public void draw(); } ii) 추상 메소드가 하나.. 2020. 6. 13. 5장. 상속 #3 오버라이딩 메소드 오버라이딩 1. 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브클래스에서 재정의 (메소드 덮어쓰기) -슈퍼클래스의 메소드의 이름, 매개변수 타입 및 개수, 리턴 타입 등 모든 것을 동일하게 작성 -메소드 실행 시 서브클래스에서 재정의된 메소드가 무조건 실행된다. 서브클래스가 업캐스팅되고 슈퍼클래스의 메소드를 실행해도 이미 오버라이딩 된 메소드가 실행된다 -> 동적 바인딩이라고 부른다. ex) class Shape { public void draw() { System.out.println("Shape"); } } class Line extends Shape { public void draw() { System.out.println("Line") } } class Circle extends Shape.. 2020. 6. 12. Troubleshoot #1 No enclosing instance of type ... is accessible 생성하는 자바 파일의 public class 이름을 Foo라고 합시다. 여러 클래스를 혼용하여 사용할 시 발생하는 에러가 있습니다. No enclosing instance of type Foo is accessible. Must qualify the allocation with an enclosing instance of type Foo (e.g. x.new A() where x is an instance of Foo). 발생하는 예시입니다. import java.util.*; public class Foo { public static void main(String[] args) { tester t = new tester(); //위의 에러 발생 } class tester { //빈 클래스 } } 발생 .. 2020. 6. 11. 5장. 상속 #2 업/다운캐스팅 업다운캐스팅 업캐스팅(upcasting) : 서브클래스 객체를 슈퍼클래스 타입으로 변환 ex) class Person {} class Student extends Person {} Person p = new Student(); 업캐스팅 cf) Student s = new Student(); Person p = s; 레퍼런스만 치환해주면 됨. 업캐스팅된 s는 슈퍼클래스의 멤버만 접근 가능하다. 2. 다운캐스팅(downcasting) : 슈퍼클래스 객체를 서브클래스 타입으로 변환 ex) class Person{} class Student extends Person{} Person p = new Person(); Student s = (Student)p; //캐스팅 필요 3. instanceof 연산자 - i.. 2020. 6. 11. 이전 1 2 3 4 5 6 7 다음