본문 바로가기

Backend/Java19

Java - 중첩 클래스 중첩 클래스 클래스가 여러 클래스와 관계를 맺는 경우 독립적으로 선언하는게 좋으나 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 된다. 클래스 내부에 선언한 클래스, 코드의 복잡성을 줄일 수 있다. 멤버 클래스 인스턴스(내부) 클래스 정적 클래스 로컬 클래스 외부 클래스 메소드 내부에서 선언된다. 인스턴스(내부) 중첩 클래스 static 키워드를 사용하지 않고 다른 클래스 내에 정의된 클래스 내부 클래스는 외부 클래스의 멤버에 접근 가능하다. 내부 클래스는 외부 클래스의 내부에 존재하므로 내부 클래스를 인스턴스 하려면 외부 클래스를 인스턴스화한 후 인스턴스화 해야함. 내부 멤버 클래스는 외부 클래스 내부에서 사용되므로 주로 private 접근 제한을 갖는 것이 일반적 .. 2023. 2. 22.
Java - 상속 상속 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것 자바는 다른 언어와 달리 다중 상속을 허용하지 않는다. 단 하나의 부모클래스가 와야 한다. public class 자식클래스 extends 부모클래스{} 업캐스팅 자식 객체를 부모의 타입으로 해석하는 것 다양한 객체들을 부모의 타입으로 관리할 수 있다. Animal a = new Dog(); Animal b = new Cat(); Animal c = new Horse(); Animal[] animals = new Animal[]{a,b,c}; 자동 타입 변환 자식 클래스는 부모 클래스로 자동 타입 변환할 수 있다 Cat cat = new Cat(); Animal animal = cat; // new Cat(); 부모 타입으로 자동 타입 변환.. 2023. 2. 19.
Java - 객체, 클래스, 인스턴스의 차이 객체, 클래스, 인스턴스는 정말 중요합니다 하지만 많이들 헷갈리시는데요. 그래서 최대한 쉽게 정리해봤어요! 객체(Object)란? 객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말합니다. 예를 들어 물리적(유형)으로 존재하는 자동차, 컴퓨터, 사람과 추상적(무형)으로 존재하는 강의, 주문 등이 모두 객체가 될 수 있습니다. 사람이라는 객체가 있다고 하면 성별, 이름, 나이 등 속성이 존재하고 밥을 먹다, 걷다, 잔다 라는 동작을 가지고 있습니다. 자바에서는 이러한 속성들을 필드(Field), 동작들을 메소드(Method)라고 부릅니다. 클래스(Class)란? 클래스(Class)란 Java 프로그램에서 객체를 생성하기.. 2023. 2. 19.
Java - 오버로딩(overloading), 오버라이딩(overriding) 차이점 오버로딩(Overloading) 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻입니다. C언어에서는 함수명이 고유하게 존재해야 합니다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것입니다. 하지만 자바에서는 하나의 메소드 이름으로 여러 기능을 구현하기 때문에 '과적하다.'라는 뜻의 이름을 붙여준 것으로 보입니다. ⭐️ 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있습니다. 오버로딩의 조건 메소드의 이름이 같고, 매개변수(파라미터)의 개수나 타입이 달라야 합니다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없습니다. 접근 제어자도 자유롭게 지정해.. 2023. 2. 19.
Java - 접근 제한자 접근 제한자 객체의 필드를와 메소드가 외부로 노출되지 않도록 도와주는 역할 public protected default private public 제한 범위 없음 같은 패키지 뿐만 아니라 다른 패키지에도 사용가능 protected 같은 패키지 혹은 자식 객체에만 사용 가능 default 접근 제한자를 생략했다면 기본으로 default 같은 패키지에서만 사용가능 private 객체 내부, 클래스 내부에서만 사용가능 Getter와 Setter 객체의 필드를 외부에서 마음대로 읽고 변경한다면 객체의 무결성이 깨질 수 있다. 이러한 문제 때문에 객체 지향 프로그래밍에서는 직접적인 외부에서의 필드 접근을 막고, 메소드를 이용해 필드에 접근하는 것을 선호한다. private 접근 제한을 가질 때 사용하는 메서드 /.. 2023. 2. 19.