개인공부
-
메서드 오버라이딩 메서드 오버라이딩은 부모 클래스에게 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것으로, 부모의 메서드를 자신이 만든 메서드로 덮어쓰는 개념이다. 메서드 오버라이딩이 수행되기 위해서는 다음 2가지 조건을 만족해야 한다 부모 클래스의 메서드와 시그너처 및 리턴 타입이 동일해야 한다. 부모 클래스의 메서드보다 접근 지정자의 범위가 같거나 넓어야 한다.
메서드 오버라이딩메서드 오버라이딩 메서드 오버라이딩은 부모 클래스에게 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것으로, 부모의 메서드를 자신이 만든 메서드로 덮어쓰는 개념이다. 메서드 오버라이딩이 수행되기 위해서는 다음 2가지 조건을 만족해야 한다 부모 클래스의 메서드와 시그너처 및 리턴 타입이 동일해야 한다. 부모 클래스의 메서드보다 접근 지정자의 범위가 같거나 넓어야 한다.
2022.07.19 -
상속의 장점 상속의 장점은 처음에 설명했던 것과 큰 차이가 없다. 중복된 코드를 줄일 수 있고, 유지 보수가 편리하며, 통일성이 있고 다형성을 구현할 수 있다 1. 상속 방법 : class 클래스(자식) extends 클래스(부모) 2. 자식 클래스는 부모 클래스로부터 메소드와 필드를 물려받아 사용한다. 부모 클래스는 자식 클래스에서 정의한 메소드나 필드를 사용하지 못한다.(자식 = 자신 + 부모 / 부모 = 자신) 3. 자식 클래스는 여러 부모 클래스로부터 상속받지 못한다. 즉, 단일상속만 가능하다. 4. 부모 클래스는 여러 자식 클래스에게 상속이 가능하다. 5. 자식 클래스가 더 다양한 기능이 가능하므로 자식 클래스로 인스턴스를 생성하는 것이 효율적이다. 자바의 클래스는 다중 상속이 불가능한 이유는 ..
클래스의 상속과 다형성상속의 장점 상속의 장점은 처음에 설명했던 것과 큰 차이가 없다. 중복된 코드를 줄일 수 있고, 유지 보수가 편리하며, 통일성이 있고 다형성을 구현할 수 있다 1. 상속 방법 : class 클래스(자식) extends 클래스(부모) 2. 자식 클래스는 부모 클래스로부터 메소드와 필드를 물려받아 사용한다. 부모 클래스는 자식 클래스에서 정의한 메소드나 필드를 사용하지 못한다.(자식 = 자신 + 부모 / 부모 = 자신) 3. 자식 클래스는 여러 부모 클래스로부터 상속받지 못한다. 즉, 단일상속만 가능하다. 4. 부모 클래스는 여러 자식 클래스에게 상속이 가능하다. 5. 자식 클래스가 더 다양한 기능이 가능하므로 자식 클래스로 인스턴스를 생성하는 것이 효율적이다. 자바의 클래스는 다중 상속이 불가능한 이유는 ..
2022.07.19 -
트리(Tree)란? 트리(Tree)는 그래프의 일종으로 정점과 간선을 이용하여 데이터의 배치 형태를 추상화한 자료구조이다. 서로 다른 두 노드를 연결하는 길이 하나뿐인 그래프를 트리라고 부른다. 힙(Heap)을 구현하는 방법 중 하나가 트리이다. 트리(Tree)의 구조 루트 노드(root node) : 부모가 없는 노드로 트리는 단 하나의 루트 노드를 가진다. (ex : A- 루트노드) 리프 노드(leaf node) : 자식이 없는 노드로 terminal 노드라고도 부른다. (ex : C, D, E - 단말 노드) 내부 노드(internal node) : 리프 노드가 아닌 노드(ex : A, B - 내부 노드), non terminal node라고도 부른다. 간선(edge) : 노드를 연결하는 선 형제(..
트리트리(Tree)란? 트리(Tree)는 그래프의 일종으로 정점과 간선을 이용하여 데이터의 배치 형태를 추상화한 자료구조이다. 서로 다른 두 노드를 연결하는 길이 하나뿐인 그래프를 트리라고 부른다. 힙(Heap)을 구현하는 방법 중 하나가 트리이다. 트리(Tree)의 구조 루트 노드(root node) : 부모가 없는 노드로 트리는 단 하나의 루트 노드를 가진다. (ex : A- 루트노드) 리프 노드(leaf node) : 자식이 없는 노드로 terminal 노드라고도 부른다. (ex : C, D, E - 단말 노드) 내부 노드(internal node) : 리프 노드가 아닌 노드(ex : A, B - 내부 노드), non terminal node라고도 부른다. 간선(edge) : 노드를 연결하는 선 형제(..
2022.07.19 -
클래스 접근 지정자 클래스에서는 public, default 접근 지정자만 사용할 수 있다. 즉, 일단 다른 패키지에서 클래스를 사용하기 위해서는 해당 클래스를 임포트 할 수 있어야 하므로 public으로 선언해야 하는 것이다. 클래스 접근 지정자와 생성자 접근 지정자의 연관성 클래스에 생성자가 없을 떄 컴파일러는 기본 생성자를 자동으로 추가한다고 했다. 이 떄 자동으로 추가되는 생성자의 접근 지정자는 클래스의 접근 지정자에 따라 결정된다. package abc.bcd public class A{ public 클래스 public A(){}public 생성자 } //클래스와 생성자에 모두 public 접근 지정자가 이기에 //다른 패키지에서 클래스를 임포트하거나 생성자를 호출 할 수 있다 package a..
접근지정자클래스 접근 지정자 클래스에서는 public, default 접근 지정자만 사용할 수 있다. 즉, 일단 다른 패키지에서 클래스를 사용하기 위해서는 해당 클래스를 임포트 할 수 있어야 하므로 public으로 선언해야 하는 것이다. 클래스 접근 지정자와 생성자 접근 지정자의 연관성 클래스에 생성자가 없을 떄 컴파일러는 기본 생성자를 자동으로 추가한다고 했다. 이 떄 자동으로 추가되는 생성자의 접근 지정자는 클래스의 접근 지정자에 따라 결정된다. package abc.bcd public class A{ public 클래스 public A(){}public 생성자 } //클래스와 생성자에 모두 public 접근 지정자가 이기에 //다른 패키지에서 클래스를 임포트하거나 생성자를 호출 할 수 있다 package a..
2022.07.18 -
패키지는 비슷한 목적으로 생성된 클래스 파일들을 한곳에 모아둔 폴더를 의미한다. 프로그램을 작 ㅂ성하다 보면 각각의 목적에 따라 여러 개의 클래스 파일(네트워크 처리를 위한 클래스 10개, GUI 처리를 위한 클래스 8개 등)들이 생긴다. 이렇게 동일한 목적으로 만들어진 클래스들을 1개의 공간(폴더)에 묶어 관리하기 위해 사용하는 것이 바로 '패키지'다. 1개의 프로젝트에 1개의 패키지를 생성할 수도 있고 여러 개의 패키지를 생성할 수도 있다. 패키지를 아예 생성하지 않아도 문법적으로는 전혀 문제가 없다. 패키지를 아예 생성하지 않아도 문법적으로는 전혀 문제가 없다. 생성된 패키지를 폴더의 구조상으로 보면 src 폴더의 하위 폴더에 위치한다. 컴파일이 수행되면 바이트 코드가 저장되는 bin 폴더에도 동일..
클래스 외부 구성 요소(패키지와 임포트)패키지는 비슷한 목적으로 생성된 클래스 파일들을 한곳에 모아둔 폴더를 의미한다. 프로그램을 작 ㅂ성하다 보면 각각의 목적에 따라 여러 개의 클래스 파일(네트워크 처리를 위한 클래스 10개, GUI 처리를 위한 클래스 8개 등)들이 생긴다. 이렇게 동일한 목적으로 만들어진 클래스들을 1개의 공간(폴더)에 묶어 관리하기 위해 사용하는 것이 바로 '패키지'다. 1개의 프로젝트에 1개의 패키지를 생성할 수도 있고 여러 개의 패키지를 생성할 수도 있다. 패키지를 아예 생성하지 않아도 문법적으로는 전혀 문제가 없다. 패키지를 아예 생성하지 않아도 문법적으로는 전혀 문제가 없다. 생성된 패키지를 폴더의 구조상으로 보면 src 폴더의 하위 폴더에 위치한다. 컴파일이 수행되면 바이트 코드가 저장되는 bin 폴더에도 동일..
2022.07.18 -
this 메서드와 this()메서드 클래스의 외부에서 멤버(필드, 메서드, 이너 클래스)를 호출하기 위해서는 객체를 먼저 생성한 후 '참조 변수명.멤버명'의 형태로 호출하지만 클래스 내부에서는 개체의 생성 없이 필드와 메서드를 바로 사용할 수 있다고 했다. 하지만 모든 사용할 수 있는 상태의 멤버는 항상 객체 속에서만 존재한다. 그렇다면 어떻게 클래스 내부에서는 객체를 생성하지 않고 바로 필드와 메서드를 사용할 수 있을까? 내부 객체 참조 변수명인 this 키워드 우리는 클래스 내부에서도 객체 안의 멤버를 사용해 왔다. 즉 '참조 변수명. 멤버명'의 형태를 사용해 온 셈이다. 다만 객체를 직접 만들지 않은 것 뿐이다. 모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this라는 참조 변수가 있다...
내부 객체 참조 변수명인 thisthis 메서드와 this()메서드 클래스의 외부에서 멤버(필드, 메서드, 이너 클래스)를 호출하기 위해서는 객체를 먼저 생성한 후 '참조 변수명.멤버명'의 형태로 호출하지만 클래스 내부에서는 개체의 생성 없이 필드와 메서드를 바로 사용할 수 있다고 했다. 하지만 모든 사용할 수 있는 상태의 멤버는 항상 객체 속에서만 존재한다. 그렇다면 어떻게 클래스 내부에서는 객체를 생성하지 않고 바로 필드와 메서드를 사용할 수 있을까? 내부 객체 참조 변수명인 this 키워드 우리는 클래스 내부에서도 객체 안의 멤버를 사용해 왔다. 즉 '참조 변수명. 멤버명'의 형태를 사용해 온 셈이다. 다만 객체를 직접 만들지 않은 것 뿐이다. 모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this라는 참조 변수가 있다...
2022.07.18