개발 46

[JAVA] 자바 업캐스팅, 다운캐스팅

자바에서 캐스팅(casting)은 형변환, 타입을 변경시키는 것을 뜻한다. 부모와 자식의 관계 즉 상속 관계에서 상위클래스에 속하는 슈퍼클래스와 하위 클래스에 속하는 서브 클래스의 형변환을 캐스팅이라고 하고 서브 클래스가 슈퍼클래스로 변환되는 것을 업캐스팅, 그 반대를 다운캐스팅이라고 한다. 업캐스팅 자바의 상속관계는 상위클래스의 모든 특성을 하위 클래스가 받아서 사용할 수 있다. 그 말은 서브 클래스는 수퍼클래스 취급을 받을수 있다는 말인데 여기서 업캐스팅을 통해 객체가 슈퍼클래스 타입으로 형변환을 시킨다. 위의 코드에서 25행 부분만 이런식으로 바꿨는데 자동으로 JVM이 컴파일하면서 인식하지만 굳이 붙여준 이유는 관행상 부모 유형을 명시하는건 권장한다고 한다!! 그렇다면 업캐스팅은 왜 사용하는 것일까..

개발/JAVA 2021.02.22

[JAVA] 자바 static의 사용

현재 국비 학원에서 자바과정을 들으면서 어제 static의 사용법에 관해 배웠다. 내가 수업에서 이해한 바로 설명하자면, static의 영어단어의 뜻은 정적인, 고정적인 이란 뜻인데 객체(인스턴스)의 멤버가 아니라 클래스에 고정되어 있는 멤버이기 때문에 객체의 생성 없이 바로 사용할 수 있는 아주 편리한 녀석이였다. static 메서드나 static 변수를 사용하면 객체를 만들지 않고도 바로 사용할 수 있다는 것이다. 말로 하면 어려울 수 있으니 간단하게 만들어 보았다. 1. 객체 생성 위 사진처럼 객체를 이용해서 1234를 출력해보았다. 다음은 static의 사용이다. 2. static을 사용 이렇게 객체의 생성 없이 호출할 수 있다. JVM에는 ClassLoader이라는 것이 있는데 이 녀석이 .cl..

개발/JAVA 2021.02.20

[JAVA] 자바 접근 제한자 private

흔히 생성자, 메서드 ,변수 선언등을 할때 사용하는것에는 public과 private가 있다. 이를 접근제한자라고 하는데 말 그대로 해당 제한자가 붙은 위치에 접근을 허락하기도 하고 접근을 막으려고 숨기기도 하는 역할을 한다. 이런식으로 변수선언을 할때 앞에 넣어 줄 수 있는데, 위의 그림에서의 class Car1안에서만 해당 변수들을 사용할 수 있따는 말이다. 이러한 filed들을 private로 감춰 놓는 것을 캡슐화라고 한다. 캡슐화는 객체지향의 언어의 특징이라고 할 수 있는데 목적은 정보의 보호에 있다. 왜냐하면 모든 정보가 많이 노출이 되면 이 코드를 보고, 또 재사용 해야하는 개발자나, 실제 사용자가 혼란을 겪을 수 있기 때문이다. 가령 한번만 쓰고 말 코드들은 private처리를 해서 다른 ..

개발/JAVA 2021.02.08

[JAVA]자바 - 배열을 이용하여 아주 간단한 영화 예매하기 만들기

오늘 해볼건 아주 간단한 영화 예매 프로그램이다(프로그램이라 하기에도 그렇다;ㅋㅋ) 우선 배열을 이용할건데 좌석을 보여주고 원하는 자리를 선택하게 한 뒤 그 자리가 예약이 되었다는 의미로 숫자를 0에서 1로 바꾸고 원래 처음 질문인 예매를 할건지 물어보게 반복되는 프로그램을 만들 생각이다. 이렇게 일단은 코드를 적었는데... 자꾸 한바퀴돌고 리셋이 되면 예약되었던 자리가 다시 0으로 돌아간다.. 이런 기본적인 것도 한번에 못하다니 너무 암울하다... 바로 떠오르지 않아 한 두시간 혼자서 머리를 굴려본 결과 약간의 수정을 거쳐 원하는 코드를 만들 수 있었다. import java.util.Scanner; public class Reservation { public static void main(String..

개발/JAVA 2021.02.04

깃허브 기존 레퍼지토리에 이클립스 파일 올리는 법

처음에 잘 몰라서 조금 헤매기도 하고, 매번 할때마다 조금씩 헷갈려서 그냥 내가 기록으로 남겨놓고 헷갈릴때 마다 봐야겠다 싶어서 적습니다. 우선 기존 레퍼지토리 제가 자바 공부하고 작성한 파일들을 올려 놓는 java-study2 파일에 실험 해보겠습니다. 1. 우선 임시로 테스트 파일을 만들겠습니다. TEST파일을 만들고 HELLO WORLD를 콘솔창에 출력시켜봤습니다. 이제 이 파일을 java-study2 레퍼지토리에 올려보도록 하겠습니다. 누구나 알듯이 쉐어 프로젝트를 한 후 깃레퍼지토리에서 Remote - Create Remote 를 눌러줍니다. 그 다음 깃허브 자바스터디2 페이지에 가서 주소를 복사 해줍니다. 복사 한 뒤 change 를 누르면 위와 같이 복사한 부분이 바로 입력된 채로 뜨게 됩니..

개발/꿀팁들 2021.01.05

상속과 다형성

상속이란 클래스를 정의 할 떄 이미 구현된 클래스를 상속받아서 속성이나 기능이 확장되는 클래스를 구현. 상위 하위클래스의 형변환 상위클래스 = Customer 하위클래서 = VIPCustomer 이 경우, VIPCustomer은 Customer에도 포함이 된다. VIPCustomer customerKim = new VIPCustomer(10101, "Kim"); 여기서 Customer customerKim = new VIPCustomer(10101, "Kim") 이렇게 표현도 가능하다. 이를 업캐스팅이라고 한다. 메서드 오버라이딩 상위 클래스에 정의 된 메서드 중 하위 클래스와 기능이 맞지 않거나 추가 기능이 필요한 경우 같은 이름과 매개변수로 하위 클래스에서 재정의 함 다형성 하나의 코드가 여러가지 자..

개발/JAVA 2021.01.05

객체 와 클래스

객체(Object) 란? 사전적 의미 - "의사나 행위가 미치는 대상" 구체적, 추상적 데이터 단위 객체지향 프로그래밍(Object Oriented Programming, OOP) cf. 절차지향 프로그래밍(Procedural Programming, 예) C언어) 클래스(Class) 객체에 대한 속성과 기능을 코드로 구현한 것. 객체의 속성 객체의 특성, 속성, 멤버 변수 (property, attribute, member variable) 객체의 기능 객체가 하는 기능들을 메서드로 구현 (method, member function) class는 대부분 대문자로 시작 패키지 이름은 소문자, 패키지 이름은 대문자, 변수, 메서드는 소문자로 시작해서 단어가 바뀔때 마다 대문자 메서드 함수의 일종 객체의 기능..

개발/JAVA 2020.12.27

제어 흐름 이해하기

조건문 if 문 if(조건식) { 수행문1; } else { 수행문2; } 조건식에 해당할 경우 수행문1을 수행, 그 외에 수행문2를 수행 switch-case문 조건식의 결과가 정수 또는 문자열의 값이고 그 값에 따라 수행문이 결정될 때 if -else 대신 switch-case문을 사용 반복문 주어진 조건이 만족 할 때까지 수행문을 반복적으로 수행함 while문 while(조건식) { 수행문1; ... } 수행문2; ... (조건식이 참인동안 반복수행함) for문 이런식으로 for 문을 통해 구구단을 출력할 수 있다

개발/JAVA 2020.12.22

연산자

항: 연산에 사용되는 값 연산자: 항을 이용하여 연산하는 기호 대입 연산자 변수에 값을 대입 하는 연산자 연산의 결과를 변수에 대입 우선 수위가 가장 낮은 연산자 왼쪽 변수에 오른쪽 변수(값)를 대입 // int age = 24; 부호연산자 양수/음수의 표현, 값의 부호를 변경 변수에 +, -를 사용한다고 해서 변수의 값이 변하는게 아님 변수의 값을 변경하려면 대입연산자를 사용 산술연산자 사칙연산에 사용되는 연산자 %는 나머지를 구하는 연산자 증가감소연산자 1만큼 더하거나 1만큼 뺄 때 사용하는 연산자 항의 앞/뒤 위치에 따라 연산의 결과가 달라짐에 유의 num3의 출력값은 11(10에서 +1이 되서 나온다.) num4의 출력값은 각각 10, 11(우선 할당된 10이 나온 뒤 1을 더한 11이 나온다.)..

개발/JAVA 2020.12.21