분류 전체보기(361)
-
[Java] 추상 클래스
추상 메소드(abstract method) 선언은 되어 있으나 코드가 구현되어 있지 않은 메소드이다. 추상 메소드를 작성하려면 abstract 키워드와 함께 원형만 선언하고 코드는 작성하지 않는다. public abstract String getName(); public abstract void setName(String s); 코드를 작성하면 추상 메소드가 될 수 없다. 추상 클래스가 되는 경우 1. 추상 메소드를 포함하는 클래스 absrtact class Shape { // 추상 클래스 선언 public Shape() {} public void paint() { draw(); } abstract public void draw(); // 추상 메소드 선언 } 추상 메소드를 포함하면 반드시 추상 클래스로..
2020.05.01 -
[Java] 메소드 오버라이딩(method overriding)
메소드 오버라이딩 슈퍼 클래스에 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개 변수 리스트를 갖는 메소드를 서브 클래스에서 재작성하는 것으로, 슈퍼 클래스와 서브 클래스의 메소드 사이에서 발생한다. '슈퍼 클래스 덮어쓰기'로 생각하면 이해하기 쉽다. 오버라이딩했을 경우 서브 클래스의 메소드가 우선적으로 실행된다. 이런 처리를 동적 바인딩이라고 부른다. 아래 코드를 보자. class Shape { public void draw() { System.out.println("Shape"); } } class Line extends Shape { @Override public void draw() { System.out.println("Line"); } } class Rect extends Shape ..
2020.04.27 -
[Java] 업캐스팅, 다운캐스팅, instanceof
캐스팅이란? 캐스팅(casting) : 타입 변환을 의미한다. 클래스에 대한 캐스팅 - 업캐스팅(upcasting), 다운캐스팅(downcasting) 2가지가 있다. 업캐스팅 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환하는 것이다. > 서브 클래스는 슈퍼 클래스를 상속받았기 때문에, 서브 클래스의 객체는 슈퍼 클래스의 멤버를 모두 가진다는 점에서 서브 클래스의 객체를 슈퍼 클래스의 객체로 취급할 수 있다. Person p; // 상속받은 레퍼런스 p Student s = new Student(); // Student 객체 생성, 레퍼런스 s 생성 p = s; // 슈퍼 클래스 레퍼런스 p는 서브 클래스 s의 레퍼런스를 가진다. 하지만 p의 멤버에만 접근가능하다. 업캐스팅한 레퍼런스로..
2020.04.27 -
[Java] 상속과 생성자
서브 클래스와 슈퍼 클래스 각각 생성자를 가지고 있다. 그렇다면 생성자의 실행은 어떻게 될까? > 둘 다 실행되며, 슈퍼 클래스의 생성자가 먼저 생성된 후 서브 클래스의 생성자가 생성된다. 예를 들어, class A, class B extends A, class C extends B 이렇게 상속 관계가 있다고 하자. 메인에서 class C의 객체를 생성하면 class A { 3. A 생성자 호출 public A() { } 4. A 생성자 리턴 } class B extends A{ 2. B 생성자 호출 public B() { } 5. B 생성자 리턴 } class C extends B { 1. C 생성자 호출 public C() { } 6. C 생성자 리턴 } public class Main { publi..
2020.04.21 -
[Java] 상속과 접근 지정자
슈퍼 클래스 멤버에 접근하는 클래스 종류 슈퍼 클래스 멤버의 접근 지정자 private default protected public 같은 패키지에 있는 클래스 x o o o 다른 패키지에 있는 클래스 x x x o 같은 패키지에 있는 서브 클래스 x o o o 다른 패키지에 있는 서브 클래스 x x o o private - 오직 같은 클래스 내에서만 접근 가능. default - 같은 패키지 내의 클래스에서만 접근 가능. protected - 같은 패키지 내의 클래스 or 패키지와 상관없이 상속받는 서브 클래스에서 접근 가능. public - 모든 클래스에서 접근 가능.
2020.04.21 -
[Java] 상속(extends)
※ 이 글은 공부한 내용을 정리하는 글입니다. 상속 : 평소 대화할 때 쓰이는 상속과 비슷한 맥락이다. 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것이 상속이다. 부모 클래스 - Super class 라고 불림. 자식 클래스 - Sub class 라고 불림. 상속의 장점 클래스의 간결화 중복되는 코드들은 상속을 주고받음으로써 코드의 중복을 없애준다. 클래스 관리 용이 클래스들을 계층적으로 분류할 수 있으므로 클래스 관리가 용이하다. 생산성 향상 클래스를 재사용하기 쉽고 확장에 용이하다. 상속 선언 sub class 뒤에 extends super class 이름을 선언하면 된다. public class Point { // ColorPoint에 상속을 주는 super class } cla..
2020.04.21