Study/Java 12

[Java] 제네릭(Generic)

제네릭(Generic)클래스나 메서드를 선언할 때 데이터 타입을 미리 정하지 않고, 객체를 생성할 때나 메서드를 호출할 때 구체적인 타입을 지정하는 것을 말한다. 설계 시 구체적인 타입을 언급하지 않고 포괄적인 타입으로 작성함으로써 코드의 재사용성을 높이고, 컴파일 시 타입 안정성을 보장한다. 🔻아래의 예시를 보며 이해를 해보자.  Box에 넣을 내용물로 content 필드를 선언하려고 할 때, 타입을 무엇으로 해야 할까?🤔 public class Box { public ? content;} 다양한 내용물을 저장해야 하므로 특정 클래스 타입으로 선언할 수 없다. 그래서 다음과 같이 Object 타입으로 선언한다.public class Box { public Object content;}   Objec..

Study/Java 2024.08.02

[Java] 객체 비교 - equals(), == 차이

'equals()'와 '=='를 코드 짤 때 헷갈렸는데, 문제를 풀다가 정리하면 좋을 것 같아서 간단하게 정리해 보았다. equals() 메서드두 객체의 내용(값)을 비교한다.  == 연산자두 객체의 주소값(참조)을 비교한다. 즉, 두 객체가 동일한 메모리 주소를 참조하는지 확인한다.기본형 변수에서는 변수의 값을 비교한다. 예제를 보면 더 쉽게 이해될 것이다.Vector v1 = new Vector();Vector V2 = new Vector();v1.addElement("java_book");v2.addElement("java_book");System.out.println(v1.equals(v2)); //trueSystem.out.println(v1 == v2); //falseint a = 3, b =..

Study/Java 2024.07.16

[Java] static 변수

정처기 프로그래밍 문제를 풀다가 정리해 두면 좋을 것 같아서 자바의 static 변수에 대해 간단하게 정리하려고 한다. static 변수C언어에서 함수 내에서 선언된 static 변수는 함수가 종료되어도 사라지지 않고, 함수가 다시 호출되었을 때 이전 값을 유지한다.전역 범위에서 선언된 static 변수는 해당 파일 내에서만 접근이 가능하고, 프로그램 종료 시까지 메모리에 유지된다. Java에서 static 변수는 클래스 수준에서 선언되는 변수로, 해당 클래스의 모든 인스턴스에 걸쳐 공유된다.하나의 인스턴스에서 static 변수의 값을 변경하면, 변경사항이 모든 인스턴스에 반영된다.인스턴스 변수와 달리 클래스가 로드될 때 초기화되며, 프로그램이 종료될 때 해제된다.참고로 인스턴스를 생성하지 않고 클래스명..

Study/Java 2024.07.04

[Java] 중첩 선언과 익명 객체

중첩 클래스클래스 선언 안에 또 다른 클래스를 선언할 수 있다.중첩 클래스를 사용하면 클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춰 복잡성을 줄일 수 있다. 선언 위치에 따른 분류선언 위치객체 생성 조건멤버 클래스인스턴스멤버 클래스class A {   class B { ... }}A 객체를 생성해야만B 객체를 생성할 수 있음정적멤버 클래스class A {   static class B { ... }}A 객체를 생성하지 않아도B 객체를 생성할 수 있음로컬 클래스class A {   void method() {      class B { ... }   }}method가 실행할 때만B 객체를 생성할 수 있음 인스턴스 멤버 클래스인스턴스 멤버 클래스는 아래와 같이 A 클래스의 멤버로 선..

Study/Java 2024.06.10

[Java] 인터페이스 타입 변환과 다형성

[Java] 다중 인터페이스와 인터페이스의 상속[Java] 인터페이스 선언 및 구성 멤버인터페이스인터페이스는 두 객체를 연결하는 역할을 한다. 객체 A가 인터페이스의 메서드를 호출하면, 인터페이스는 객체 B의 메서드를 호출하고 그 결과를auny.tistory.com  타입 변환인터페이스의 타입 변환은 인터페이스와 구현 클래스 간에 발생한다. 지금까지 해왔던 것처럼 인터페이스 변수에 구현 객체를 대입하면 구현 객체는 인터페이스 타입으로 자동 타입 변환된다. 반대로 인터페이스 타입을 구현 클래스 타입으로 변환시킬 수 있는데, 이때는 강제 타입 변환이 필요하다. 자동 타입 변환 부모 클래스가 인터페이스를 구현하고 있다면 자식 클래스도 인터페이스 타입으로 자동 타입 변환될 수 있다.B, C, D, E로부터 생성..

Study/Java 2024.06.01

[Java] 다중 인터페이스와 인터페이스의 상속

[Java] 인터페이스 선언 및 구성 멤버인터페이스인터페이스는 두 객체를 연결하는 역할을 한다. 객체 A가 인터페이스의 메서드를 호출하면, 인터페이스는 객체 B의 메서드를 호출하고 그 결과를 받아 객체 A로 전달해 준다.  그렇auny.tistory.com 이전 글에 이어서 인터페이스에 대해 정리하려고 한다. 우선, 자바는 클래스의 다중 상속을 허용하지 않는다는 것을 기억하고 시작하자. 다중 인터페이스 구현 객체는 여러 개의 인터페이스를 implements 할 수 있고, 모든 인터페이스가 가진 추상 메서드를 재정의해야 한다.public class 구현클래스명 implements 인터페이스A, 인터페이스B { //모든 추상 메서드 재정의} 인터페이스 상속인터페이스는 다른 인터페이스를 상속할 수 있고, 클래..

Study/Java 2024.05.30

[Java] 인터페이스 선언 및 구성 멤버

인터페이스인터페이스는 두 객체를 연결하는 역할을 한다. 객체 A가 인터페이스의 메서드를 호출하면, 인터페이스는 객체 B의 메서드를 호출하고 그 결과를 받아 객체 A로 전달해 준다.  그렇다면 직접 호출하지 않고 왜 중간에 인터페이스를 거치도록 하는 것일까?🤔 만약 객체 B가 객체 C로 교체된다고 가정해보자.객체 A는 인터페이스의 메서드만 사용하므로 객체 B가 객체 C로 변경되는 것에 관심이 없다.인터페이스 없이 객체 A가 객체 B를 직접 사용했다면 객체 A의 소스 코드를 객체 B를 객체 C로 변경하는 작업이 추가로 필요했을 것이다. 인터페이스 사용으로 객체 A가 인터페이스의 메서드를 호출하면 실제로 실행되는 것은 인터페이스 뒤편의 객체 B 또는 객체 C의 메서드가 될 것이다. 이 특징으로 인해 인터페이..

Study/Java 2024.05.25

[Java] 상속

상속상속은 부모가 자식에게 물려주는 행위를 말한다.객체 지향 프로그램에서 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있다. 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 개발 시간을 단축시킨다.또한 클래스의 수정을 최소화할 수 있다. 부모 클래스를 수정하면 모든 자식 클래스에 수정 효과를 가져온다. 그렇기 때문에 유지보수도 편리해진다. 클래스 상속현실에서는 부모가 자식을 선택해 상속하지만, 프로그램에서는 자식이 부모를 선택한다.자식 클래스를 선언할 때 어떤 부모로부터 상속받을 것인지를 결정한다.public class 자식클래스 extends 부모클래스 { } 참고로 자바는 다른 언어와 달리 다중 상속을 허용하지 않는다. 부모 생성자 호출자식 ..

Study/Java 2024.05.09

[Java] 객체와 클래스

객체객체란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다.객체는 속성과 동작으로 구성되는데, 자바는 각각 필드(field)와 메서드(method)라고 부른다. 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다. 객체의 상호작용현실 세계에서 일어나는 모든 현상은 객체와 객체 간의 상호작용으로 이루어져 있다.객체 지향 프로그램에서도 객체들은 다른 객체와 서로 상호작용하면서 동작한다.객체들 사이의 상호작용 수단은 메서드이다. 객체가 다른 객체의 기능을 이용할 때 이 메서드를 호출한다. 객체 간의 관계객체는 단독으로 존재할 수 있지만 대부분 다른 객체와 관계를 맺고 있다.집합 관계 : 완성품과 부품의 관계사용 관계 : 다른 객체의 필드를 읽고 변경하거나 메..

Study/Java 2024.05.06