본문 바로가기

Java48

JAVA 추상클래스와 인터페이스의 차이 추상 클래스와 인터페이스는 모두 추상 메서더를 사용할 수 있다는 공통점이 있다. 그러나 왜 이 두가지를 나누어서 사용 할까? 추상클래스와 인터페이스의 차이점을 이해하려면 먼저 추상 클래스와 인터페이스의 기능을 알아봐야 한다. 추상 클래스는 클래스의 구현부 내부에 추상 매서드가 하나 이상 포함되거나 abstract로 정의된 것을 말한다. 추상화를 하면서 중복되는 클래스 멤버들을 통합 및 확장할 수 있으며, 클래스간의 연관 관계를 구축하는 것에 초점을 둔다. 추상 클래스를 상속받은 클래스(하위 클래스)는 각 성질에 맞게 Overriding하여 사용하며, new 연산자를 사용하여 객체를 생성할 수 없다. 반면, 인터페이스는 추상클래스와 달리 인터페이스 내부의 메서드, 필드 등은 모두 public 상태이며, a.. 2023. 5. 3.
JAVA Inner class Java에서 Inner class란 내부 클래스라고 하는데 즉 클래스 안의 클래스이다. class A { //외부 클래스 ... class B{ //내부 클래스 ... } ... } 내부 클래스의 장점은 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근 가능하며, 코드의 복잡성을 줄일 수 있다.(캡슐화) 예를 들어 A class에서만 쓰이는 것을 굳이 밖에다 만들어서 쓰지 않고 내부에 만들어 써서 사용하기 위한 편함이 있다. 내부 클래스는 외부 클래스가 생성된 이후에 사용이 가능하다. 그러므로 내부 클래스는 클래스가 사용될 때만 사용이 되며, 다른 클래스에서는 사용되지 않는다. 내부 클래스는 주로 이벤트 핸들러를 처리할 때나 안드로이드 앱을 만들 때 많이 사용된다. Inner 클래스는 Outer 클래스의.. 2023. 5. 3.
JAVA Extends Extends란 자바에서 자식 클래스가 부모 클래스의 필드와 메서드를 물려 받는 것을 의미한다. 이때, 자식 클래스는 부모 클래스를 상속받기 위해 extends 예약어를 사용해야 한다. 예를 들어 부모 클래스 👉 Animal Class 이를 상속받는 자식 클래스 👉 Dog Class 이렇게 부모 클래스와 자식 클래스가 있다면 Dog 클래스는 Animal 클래스를 상속받기 위해 아래와 같이 작성하면 된다. public class Dog extends Animal { // Dog Class에 클래스 명이 Animal Class인 부모 클래스를 상속받음 } 위와 같이 작성하면, Dog 클래스는 Animal 클래스의 필드와 메서드를 사용할 수 있다. 또한, 하나의 부모 클래스는 여러개의 자식 클래스를 가질 수 .. 2023. 5. 2.
JAVA Abstract Abstract 클래스는 자바에서 상속과 인스턴스화를 방지하기 위한 클래스이다. 이 클래스는 abstract 키워드를 사용하여 정의할 수 있으며, 클래스 내에 추상 메소드를 포함할 수 있다. 추상 메소드는 메소드의 기본 틀만 정의하고, 구현 내용은 자식 클래스에서 구현한다. abstract 클래스의 주요 특징은 abstract 클래스는 인스턴스화 할 수 없다. abstract 클래스는 추상 메소드를 포함할 수 있다. abstract 클래스는 일반 메소드를 포함할 수 있다. abstract 클래스는 자식 클래스에서 상속받아 구현한 추상 메소드를 호출할 수 있다. abstract 클래스는 자식 클래스를 구현하는데 있어서 중요한 역할을 한다. 자식 클래스는 abstract 클래스를 상속받고, abstract .. 2023. 5. 2.
JAVA 다형성 Java의 다형성(polymorphism)은 객체 지향 프로그래밍의 중요한 개념 중 하나로, 상속, 인터페이스, 오버라이딩 등의 기술을 이용하여 같은 타입이지만 다른 객체를 참조할 수 있도록 하는 것을 말한다. 이를 통해 코드 재사용성과 유지보수성을 높일 수 있다. 자바에서 다형성을 구현하는 방법은 크게 두 가지이다. 첫 번째는 부모 타입으로 자식 객체를 참조하는 업캐스팅(Upcasting)이다. 이 경우, 부모 클래스 타입의 변수로 자식 클래스 타입의 객체를 참조 하는 것. 따라서 부모 클래스에서 정의된 메서드만 사용할 수 있다. 두 번째는 오버라이딩(Overriding)이다. 부모 클래스에서 정의한 메서드를 자식 클래스에서 다시 정의하여 사용하는 것을 말한다. 이 때, 메서드의 이름, 매개변수, 반환.. 2023. 5. 2.
JAVA This java 에서 this 이것은 즉 인스턴스 자기 자신을 가리키는 키워드이다. 이 키워드를 통해 클래스 메서드 및 생성자에게 자기 자신의 데이터를 업데이트 하거나 조작할 수 있다. this는 클래스를 기반으로 생성된 인스턴스를 가르키는데 이 참조를 통해 인스턴스의 필드나 메서드에 접근할 수 있다. 예를 들어, 인스턴스 변수와 매개변수 이름이 같을 때, this를 사용하여 인스턴스 변수를 구분할 수 있다. public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; // this를 사용하여 인스턴스 변수와 매개변수를 구분 this.age = age; // this.. 2023. 5. 1.
JAVA Scanner Java에서 Scanner는 사용자의 입력을 받기 위해 사용되는 클래스 중 하나이다. Scanner 클래스는 java.util 패키지에 속해 있으며, import 문을 통해 사용할 수 있다. 그리고 Scanner 클래스를 사용하기 위해서는 먼저 Scanner 객체를 생성해야 한다. Scanner크래스는 사용자로부터 다양한 형태로 입력 받을 수 있으며, 문자열이나 숫자열을 입력받을 수도 있다. 이에 따라 여러가지 메소드를 제공하는데, 문자열을 입력받을 경우 next() 메소드를 사용하고, 숫자열을 입력받을 경우 nextInt() 메소드를 사용한다. Scanner 클래스는 입력값을 토큰 단위로 읽는데. 스페이스바로 구분된 토큰들은 각각 하나의 메소드에 하나씩 들어가게 되며, nextLine()메소드는 예외적.. 2023. 5. 1.
JAVA Static Static Java에서 Static이란 메모리에 한번 할당되어 프로그램이 종료될 때 없어지는 즉 해제되는 영역을 말한다. 이 static을 얘기할 때에는 메모리 영역을 생각해 보아야 한다. 클래스가 메모리에 로드될때, Static 메모리에 영역이 생성되며 보통 모든 클래스에서 호출 가능한 전역변수나 전역 함수를 만들기 위해 사용한다. java에서는 일반적으로 우리가 Class를 만든다 하면 그 Class는 Static 영역에 생성되고, new 연산을 통해 만들어진 객체는 Heap이라는 영역에 만들어진다. 이때 만들어진 Static이란 영역에 할당된 메모리에 부여된 객체들은 모든 객체가 공유할 수 있다는 장점이 있지만 Heap영역과 달리 Garbage Collecto의 관리를 받지 못하므로 자주 사용시 .. 2023. 4. 27.
JAVA 생성자 생성자(Constructor) 생성자는 new 연산자를 통해서 인스턴스를 생성할 때 꼭 호출이 되고 제일 먼저 실행되는 일종의 메소드가 아닌 메소드이다. new 연산자에 의해 생성자가 생성되면, 힙 영역에 객체가 생성되고, 객체의 주소가 반환된다. 반환된 객체 주소는 클래스 타입 변수에 저장되고, 그 객체에 접근할 때 마다 이용된다. 생성자는 인스턴스 변수(필드 값 등)를 초기화 시키는 역할을 한다. 생성자 선언 방법👉 더보기 public 클래스이름 (매개변수){ //매개변수가 있는 생성자 선언 ... } 또는 public 클래스이름 ( ){ //매개변수가 없는 생성자 선언... } 생성자는 반드시 클래스명과 동일하게 정의하여야 하며, 생성자 앞에는 접근제어자만 올 수 있다. 반환값이 없으므로 void나.. 2023. 4. 26.