[Java] 참조형 형변환 (Type Casting)
형변환에는 값형 형변환과 참조형 형변환이 있다. 값형 형변환은 boolean을 제외한 값형끼리의 형변환이며, integer형을 character형으로 바꾸고 double형을 float형으로 바꾸는 작업 등을 한다. 따지고보면 character도 숫자형(아스키코드)이기 때문에 값형 형변환은 숫자형끼리의 형변환이라고 이해할 수 있다.
형변환에는 값형 형변환과 참조형 형변환이 있다. 값형 형변환은 boolean을 제외한 값형끼리의 형변환이며, integer형을 character형으로 바꾸고 double형을 float형으로 바꾸는 작업 등을 한다. 따지고보면 character도 숫자형(아스키코드)이기 때문에 값형 형변환은 숫자형끼리의 형변환이라고 이해할 수 있다.
인터페이스는 클래스의 일종으로, 클래스가 자료형인 것처럼 인터페이스도 마찬가지로 자료형이다. 인터페이스는 상속받는 여러 클래스들을 행동(사용법, 메소드)들을 통일시키는 역할을 하며, 이를 행동 규약을 정의한다고 한다. 따라서 인터페이스는 관계 형성에 많이 사용되고 있다. 인터페이스는 객체를 생성할 수 없지만, 참조 변수는 생성할 수 있다는 특징이 있다. 💡인터페이스 특징 1. 구현된 멤버를 가질 수 없다. 인터페이스는 클래스와 달리 멤버 변수를 가질 수 없다. 그리고 메소드 역시 구현부 또한 소유할 수 없다. 2. 클래스의 부모 역할을 한다. 인터페이스는 클래스의 부모 역할을 하며, 클래스가 인터페이스를 상속받을 수 있다. 이를 통해 다중 상속의 문제를 방지할 수 있고, 상속받는 클래스마다 공통된 기능을..
Java 메소드 오버로딩 (Method Overloading) 메소드마다 이름을 다르게 하여 기능을 명확하게 할 수도 있지만, 프로젝트가 커질수록 메소드의 개수 또한 많아지므로 모두 기억하고 사용하기 어렵다. 이때 사용할 수 있는 게 메소드 오버로 isaac-christian.tistory.com 지난번에 메소드 오버로딩(Method Overloading)을 살펴봤다. 메소드 오버로딩은 인자 리스트를 변화시키며 이름이 동일한 메소드를 여러 개 생성하는 기술이었다. 그렇다면 메소드 오버라이딩(Method Overriding)은 무엇일까? 이름이 비슷하긴 하지만 두 기술은 전혀 다른 기능을 제공한다. 메소드 오버라이딩은 클래스 상속 시에 발생하며, 메소드 재정의하여 상속받은 메소드를 수정하는 기술이다. 예시..
Object 클래스는 JDK에서 제공하는 클래스로, 사용 빈도가 높지는 않지만 자바를 통틀어 가장 중요한 클래스이다. 눈으로는 보이지 않는 경우가 많은데, 우리가 사용하는 것에 밀접하게 관계되어 있는 경우가 많으며, 모든 클래스의 근원(최상위 클래스)이 된다고 해서 루트 클래스(Root Class)라고 부른다. 💡Object 클래스 (Root Class) Class Object is the root of the class hierarchy.Every class has Object as a superclass. All objects,including arrays, implement the methods of this class. // class TestParent class TestParent extend..
상속은 부모가 가지는 재신을 자식에게 물려주는 행동을 말하며, 자바에서는 부모 클래스가 가지는 멤버 변수, 멤버 메소드를 자식 클래스에게 물려주는 행동을 의미한다. 상속은 부모 클래스에 있는 100% 모든 내용을 복사해서 자식 클래스에 붙여넣기 하는 것으로 이해할 수 있다. 이때 중요한 것은 넘겨준다는 것이 복사 붙여넣기를 의미한다는 점이다. 이러한 코드 재사용의 상속의 특징으로 인해 비용 절감이 가능해진다. 💡상속 관계에 있는 클래스 호칭 상속을 어떤 목적으로 하느냐에 따라 부르는 말이 조금씩 달라진다. 1. 부모 클래스
💡클래스 로딩 (Class Loading) 메인 메소드가 실행되기 전에 여러가지 작업이 일어나는데, 그 중에 하나가 '클래스 로딩'이라는 작업이다. 클래스 로딩은 프로그램을 실행하기 전에 클래스의 정의를 미리 읽는 작업 (인식하는 작업)을 의미하며, 이는 클래스를 사용할 수 있도록 메모리에 기억하는 과정으로 이해할 수 있다. 클래스 로딩 과정에서 모든 static 키워드를 인식하고, static을 만나는 순간 메모리 실체화(구현)을 하게 된다. 그래서 정적 변수는 main()가 만들어지기 전에 만들어진다. 💡객체 변수 private String name; private int age; 객체 변수는 static이 붙지 않은 변수를 말하며, 개인 데이터를 의미한다. 💡정적 변수 private static S..
📌Q092 Class package com.test.question.q92; public class Q092 { public static void main(String[] args) { /* ● 요구사항 Book 클래스를 설계하시오. ● 조건 - Book 객체의 정보 - 제목, 가격, 저자, 출판사, 발행년도, ISBN, 페이지수 - 모든 멤버 변수의 접근 지정자는 private으로 한다. - 멤버 접근을 위한 Setter와 Getter를 정의한다. - 제목 : 읽기/쓰기, 최대 50자 이내(한글, 영어, 숫자, 공백) - 가격 : 읽기/쓰기, 0 ~ 1000000원 - 저자 : 읽기/쓰기, 제한 없음 - 페이지수 : 읽기/쓰기, 1~무제한 - 출판사 : 쓰기 전용 - 발행년도 : 읽기 전용(2019년)..
package com.test.question; import java.util.Scanner; public class Q091 { public static void main(String[] args) { /* ● 요구사항 연산식을 입력받아 실제 연산을 하시오. ● 조건 - 산술 연산자만 구현하시오.(+, -, *, /, %) - 연산식의 공백은 자유롭게 입력 가능합니다. - 산술 연산자가 반드시 존재하는지 체크하시오. - 피연산자의 갯수가 2개인지 체크하시오. ● 입력 1 입력: 10 + 2 ● 출력 1 10 + 2 = 12 ● 입력 2 입력: 10 # 5 ● 출력 2 연산자가 올바르지 않습니다. ● 입력 3 입력: 10 + ● 출력 3 피연산자가 부족합니다. ● 입력 4 입력: + 20 ● 출력 4 피..