Java 67

instanceof

프로그래밍에서 다형성은 하나의 객체가 여러 타입의 특성을 가질 수 있음을 의미한다. 자바에서는 이를 통해 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있다. 이런 유연성은 객체 지향 프로그래밍의 효율성을 크게 향상시킨다. 그러나 때로는 참조하고 있는 구체적인 객체의 타입을 알아야 할 필요가 있다. 이럴때 instanceof를 사용한다 !instanceof의 역할 주어진 객체가 특정 클래스나 인터페이스의 인스턴스인지 여부를 확인하는데 사용된다. 이 연산자는 참조형 변수가 실제로 참조하고 있는 객체의 타입을 확인할 때 매우 유용하다.안전한 다운캐스팅다운캐스팅을 수행하기 전에 먼저 instanceof를 사용해서 원하는 타입으로 변경이 가능한지 확인한 다음에 다운캐스팅을 수행하는 것이 안전하다. 다운캐스팅..

Java 2024.05.27

[인프런] 다형성

객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다. 다형성은 이름 그대로 다양한 형태를 뜻한다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다. 다형적 참조public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); }}public class Child extends Parent{ public void childMethod() { System.out.println("Child...

Java 2024.05.27

[인프런] super

super - 부모 참조부모와 자식의 필드명이 같거나 메서드가 오버라이딩 되어 있으면, 자식에서 부모의 필드나 메서드를 호출할 수 없다. 이때 super 키워드를 사용하면 부모를 참조할 수 있다. super는 이름 그대로 부모 클래스에 대한 참조를 나타낸다.public class Parent { public String value = "parent"; public void hello() { System.out.println("Parent.hello"); }}public class Child extends Parent { public String value = "child"; @Override public void hello() { System.ou..

Java 2024.05.27

[인프런] 상속과 접근 제어

UML 표기법+ : public# : protected~ : default- : private접근 제어자의 종류private : 모든 외부 호출을 막는다.default : 같은 패키지 안에서 호출은 허용한다.protected : 같은 패키지 안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.public : 모든 외부 호출을 허용한다. public class Parent { public int publicValue; protected int protectedValue; int defaultValue; private int privateValue; public void publicMethod() { System.out.println("Parent.p..

Java 2024.05.27

[인프런] 상속과 메서드 오버라이딩

부모 타입의 기능을 자식에서는 다르게 재정의 하고 싶을 수 있다. 부모에게서 상속 받은 기능을 자식이 재정의 하는 것을 메서드 오버라이딩이라 한다. public class Car { public void move() { System.out.println("차를 이동합니다."); } public void openDoor() { System.out.println("문을 엽니다."); }}public class ElectricCar extends Car { @Override public void move() { System.out.println("전기차를 빠르게 이동합니다."); } public void charge() {..

Java 2024.05.27

[인프런] final 변수와 상수

final 키워드는 이름 그대로 끝이라는 뜻이다. 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다. final은 class, method를 포함한 여러 곳에 붙을 수 있다.지역변수에  final 할당public class FinalLocalMain { public static void main(String[] args) { // final 지역 변수 final int data1; data1 = 10; // 최초 한번만 할당 가능 // data1=20; // 컴파일 오류 }}final을 지역변수에 설정할 경우 최초 한번만 할당할 수 있다. 이후에 변수의 값을 변경하려면 컴파일 오류가 발생한다.final을 지역변수 선언 시 바로 초기화..

Java 2024.05.27

[인프런] static 메서드

정적 메서드는 객체 생성 없이 클래스에 있는 메서드를 바로 호출할 수 있다. 하지만 정적 메서드는 언제나 사용할 수 있는 것은 아니다.정적 메서드 사용법static 메서드는 static 만 사용할 수 있다.클래스 내부의 기능을 사용할 때, 정적 메서드는 static이 붙은 정적 메서드나 정적 변수만 사용할 수 있다.클래스 내부의 기능을 사용할 때, 정적 메서드는 인스턴스 변수나, 인스턴스 메서드를 사용할 수 없다.반대로 모든 곳에서 static을 호출 할 수 있다.정적 메서드는 공용 기능으로 접근 제어자만 허락한다면 클래스를 통해 모든 곳에서 static을 호출할 수 있다. public class DecoData { private int instanceValue; private static i..

Java 2024.05.26

[인프런] 스택과 큐 자료 구조

자료 구조 : 데이터를 어떤식으로 보관하고 관리할지에 대한 구조스택 구조다음과 같이 1, 2, 3 블럭을 통에 넣는다고 가정해본다.  => 후입 선출 ( LIFO ) : 가장 마지막에 넣은 3번이 가장 먼저 나온다. 이런 방식을 후입 선출이라 하고, 이런 자료 구조를 스택이라고 한다.  => 선입 선출 ( FIFO ) : 후입 선출과 반대로 가장 먼저 넣은 것이 가장 먼저 나오는 것을 말하고, 이러한 자료 구조를 큐 라고 한다.이러한 자료 구조는 각자 필요한 영역이 있다. 예를 들어 선착순 이벤트를 하는데 고객이 대기해야 한다면 큐 자료 구조를 사용해야 한다.스택 영역public class JavaMemoryMain1 { public static void main(String[] args) { ..

Java 2024.05.25

[인프런] 자바 메모리 구조

자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다.메서드 영역 : 클래스 정보를 보관한다. 붕어빵 틀 !스택 영역 : 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때마다 하나씩 쌓인다.힙 영역 : 객체가 생성되는 영역이다. new 명령어를 사용하면 이 영역을 사용한다. 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간이고, 배열도 이 영역에 생성된다. 1. 메서드 영역 : 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.클래스 정보 : 클래스의 실행 코드, 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재static 영역 : static 변수들을 보관런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상..

Java 2024.05.25

[인프런] 캡슐화

캡슐화는 객체 지향 프로그래밍의 중요한 개념 중 하나로, 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말한다. 캡슐화를 통해 데이터의 직접적인 변경을 방지하거나 제한할 수 있다.캡슐화는 속성과 기능을 하나로 묶고, 외부에 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다.캡슐화를 안전하게 완성할 수 있게 해주는 장치가 접근 제어자이다.1. 데이터 숨기기객체에는 속성과 기능이 있다. 캡슐화에서 가장 필수로 숨겨야 하는 것이 속성이다. 객체 내부의 데이터를 외부에서 함부로 접근하게 두면, 클래스 안에서 데이터를 다루는 모든 로직을 무시하고 데이터를 변경할 수 있으므로 캡슐화가 깨지게 된다.객체의 데이터는 객체가 제공하는 기능인 메서드를 통해서 접근해야 한다..

Java 2024.05.22

[인프런] 접근 제어자

접근제어자자바는 public, private 같은 접근 제어자를 제공한다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다. package access;public class Speaker { int volume; Speaker(int volume) { this.volume = volume; } void volumeUp() { if(volume >= 100) { System.out.println("음량을 증가할 수 없습니다. 최대 음량입니다."); } else { volume += 10; System.out.println("음량을..

Java 2024.05.22

[인프런] 패키지

개발을 하면서 매우 많은 클래스가 생기고 관련이 있는 기능들을 분류해서 관리하고 싶다.자바에서도 폴더 기능을 제공하는데, 이를 패키지라고 한다.패키지는 이름 그대로 물건을 운송하기 위한 포장 용기나 그 포장 묶음을 뜻한다.패키지 사용패키지를 먼저 만들고 클래스를 만든다. 패키지의 위치에 주의해야 한다.package pack;public class Data { public Data() { System.out.println("패키지 pack Data 생성"); }}상단에 내가 위치하고 있는 패키지 명을 꼭 적어주어야 한다. => 생성자에 public을 사용했다. 다른 패키지에서 이 클래스의 생성자를 호출하려면 public을 사용해야 한다.패키지 안의 또 다른 패키지 안 클래스packa..

Java 2024.05.22