Programming Languages/Java(18)
-
[Java] 상속(extends)
※ 이 글은 공부한 내용을 정리하는 글입니다. 상속 : 평소 대화할 때 쓰이는 상속과 비슷한 맥락이다. 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것이 상속이다. 부모 클래스 - Super class 라고 불림. 자식 클래스 - Sub class 라고 불림. 상속의 장점 클래스의 간결화 중복되는 코드들은 상속을 주고받음으로써 코드의 중복을 없애준다. 클래스 관리 용이 클래스들을 계층적으로 분류할 수 있으므로 클래스 관리가 용이하다. 생산성 향상 클래스를 재사용하기 쉽고 확장에 용이하다. 상속 선언 sub class 뒤에 extends super class 이름을 선언하면 된다. public class Point { // ColorPoint에 상속을 주는 super class } cla..
2020.04.21 -
[Java] final 키워드
final 자바에서 final은 '변경할 수 없는' 의미를 가지는 키워드이다. final은 3군데에 적용할 수 있다. 클래스 메서드 필드 1. final class 클래스 이름 앞에 사용된 final은 클래스를 상속받을 수 없음을 선언한다. final class FinalClass { // 이 클래스 상속 불가 // ... } class SubClass extends FinalClass { // 컴파일 오류 발생. // ... } 2. final method 메소드 이름 앞에 사용된 final은 해당 메서드가 오버라이딩할 수 없음을 선언한다. 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하도록 하고자 할 때 사용한다. public class SuperClass..
2020.04.18 -
[Java] static 키워드
※ 이 글은 공부한 내용을 정리한 글입니다. static 멤버 - 동일한 클래스의 모든 객체들에 의해 공유되는 멤버이다. 멤버는 클래스당 하나가 생성되어 클래스 멤버라고도 부른다. static 멤버는 객체 내부가 아닌 별도의 공간(클래스 코드가 적재되는 메모리)에 생성된다. 그리고 클래스 로딩 시에 멤버가 생성된다. 객체가 생기기 전에 이미 생성되어 있으며, 객체가 생기기 전에도 사용이 가능하다. 또한 객체가 사라져도 멤버는 사라지지 않으며, 멤버는 프로그램이 종료될 때 사라진다. non-static 멤버 static 멤버 선언 class Sample { int n; void g() {...} } class Sample { static int m; static void g() {...} } 공간적 특성 ..
2020.04.18 -
[Java] 접근 지정자
※ 이 글은 공부한 내용을 정리하는 글입니다. 패키지(package) : 서로 관련 있는 클래스 파일들의 집합으로, 디렉터리 혹은 폴더와 같은 개념이다. 자바의 4가지 접근 지정자 - private, protected, public, default > 캡슐화의 원칙이 지켜지도록 가능한 한 접근 범위를 작게 하여 접근 지정자를 선정하는 것이 좋다. 특별한 이유가 없는 한 public 보다 private으로 선언한다. 클래스 접근 지정 - 다른 클래스에서 이 클래스를 활용할 수 있는지에 대한 허용 여부를 지정하는 것. public - 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용된다. default - 같은 패키지 내의 클래스들에게만 사용이 허용된다. 멤버 접근 지정 - private > defaul..
2020.04.18 -
[Java] 객체의 소멸과 가비지 컬렉션
※ 공부한 내용을 정리하는 글입니다. 자바에서는 객체를 생성할 수 있지만 소멸시키는 연산자는 없다. 자바는 new 로 할당받은 후 사용하지 않게 된 객체 메모리를 가비지(garbage)라고 부르며, 가비지 컬렉터가 적절한 시점에 자동으로 수집하여 가용 메모리에 반환시킨다. 가비지(garbage) : 자바 응용프로그램에서 더 이상 사용하지 않게 된 객체나 배열 메모리이다. 가비지의 기준 - 참조하는 레퍼런스가 하나도 없는 객체나 배열을 가비지로 판단한다. a = new Person("철수"); b = new Person("영희"); b = a; > b가 가리키던 객체는 아무도 참조하지 않게 되어 더 이상 접근할 수 없게 됐다. 이 객체("영희")가 가비지이다. 가비지 컬렉션(garabage collecti..
2020.04.14 -
[Java] 메소드 오버로딩
메소드 오버로딩(Method Overloading) : 한 클래스 내에서 이름이 같지만 매개변수의 타입이나 개수가 다른 여러 개의 메소드를 중복 작성하는 방법이다. 자바 특징 중 다형성의 한 경우이다. 메소드 오버로딩은 자바 컴파일러에 의해 판단되며, 컴파일러가 이름이 같은 메소드들을 구분할 수 있으면 메소드 오버로딩이 성공한다. 조건 메소드 이름이 동일해야 한다. 매개변수의 개수나 타입이 달라야 한다. 리턴 타입이나 접근 지정자는 관계없다. 성공 사례 class MethodOverloading { public int getSum(int i, int j) { return i + j; } public int getSum(int i, int j, int k) { return i + j + k; } } 실패 ..
2020.04.14