2022/10 9

[ JAVA ] 추상클래스(abstract class)란?

추상클래스(abstract class)란? 클래스 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 단어 뜻 그래도 완성되지 못한 채로 남겨진 설계도를 말한다. 하지만 우리가 생각하는 것 처름 클래스가 미완성이라 아무것도 없는 것이 아니라 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 🙄 그래서 추상 클래스 사용하는 이유는 뭘까? → 자식 클래스에서 반드시 사용되어야 하는 메소드를 작성해야 할 때이다. 🙄그러면 그냥 오버라이딩해서 사용하면 되지 않나? → 상속받은 자식 클래스에서는 메소드들이 완전히 구현된 것으로 인식하고 오버라이딩하지 않을 수 있기 때문에 추상 클래스를 사용한다. 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상..

[ JAVA ] 다형성 - 매개변수의 다형성, 여러 종류의 객체 배열

1. 매개변수의 다형성 참조변수의 다형적인 특징은 메서드의 매개변수에도 적용된다. 예제로 알아보자! 💎예제💎 class Product { int price; int bonusPoint; } class TV extends Product{} class Computer extends Product{} class Audio extends Product{} class Buyer { int money = 1000; int bonusPoint = 0; } 위 코드를 보면 Product클래스는 TC,Audio,Computer클래스의 부모클래스이며, Buyer 클래스는 제품을 구입하는 사람을 클래스로 표현한 것이다. 여기서 Buyer 클래스에 물건을 구입하는 기능의 메서드를 추가해보자! 구입할 대상이 필요하므로 매개변수..

[ JAVA ] Instanceof 연산자란? Instanceof 연산자 사용방법

Instanceof 연산자란? 객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는데 사용하는 연산자 이다.즉, 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 해당 연산자를 사용한다. 💡문법💡 object instanceOf type object가 type이거나 type을 상속받는 클래스라면 true를 리턴합니다. 그렇지 않으면 false를 리턴합니다. 💎예제💎 간단하게 살펴보자면, class A { } class B extends A { } // A 클래스를 상속 public static void main(String[] args) { A a = new A(); B b = new B(); System.out.println(a instanceof A); // true 출력 Syst..

[ JAVA ] 다형성 - 참조변수의 형변환

참조형 변수도 형변환이 가능한가? → 가능하다.기본형 변수와 같이 참조 변수도 형변환이 가능하다. 단, 조건이 있다. 서로 상속관계이 있는 클래스 사이에서만 가능하다. ✅ 참고 바로 위 부모나 바로 밑 자식이 아닌, 부모의 부모인 조부모로도 형변환이 가능하다. 따라서 모든 참조변수는 모든 클래스의 조상인 Object클래스 타입으로 형변환이 가능다. 기본형 변수의 형변환에서 작은 자료형에서 큰자료형의 형변환은 생략이 가능 했듯이, 참조형 변수의 형변환에서는 자식타입의 참조변수를 부모타입으로 형변환하는 경우에 형변환을 생략할 수 있다. 자식타입 → 부모타입(Up-casting) : 형변환 생략가능 부모타입 → 자식타입(Down-casting) : 형변환 생략불가 * 참조변수간의 형변환 역시 캐스트연산자를 사..

[ JAVA ] 다형성이란?

다형성이란? 객체지향 개념에서는 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. Java에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 구체적으로 말하자면, 부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 💡잠깐, 참조 변수 타입과 인스턴스 타입이 같아야 하는 것 아닌가❗❔ → 답은 아니다! 참조 변수 타입과 인스턴스 타입이 일치하는 것이 보통이지만, 서로 상속 관계에 있을 경우, 다음과 같이 부모 클래스의 타입의 참조 변수로 자식 클래스의 인스턴스를 참조하도록 하는 것도 가능하다! 🙄 그러면 왜 이렇게 사용하는 것일까? 그리고 어떤 차이가 있을까? → 일단 어떤 차이가 있는지 알아보고 왜 ..

[ CS용어 ] JSON 이란?

JSON 이란? JavaScript Object Notation이라는 의미의 축약어이고, JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 표준 포맷이다. 이러한 JSON은 XML의 대안으로써 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었다. 💎예시1💎 { "동물 리스트" : [ { "name" : "강아지", "typeCode": "A" }, { "name" : "고양이", "typeCode": "B" }, ] } 동물 리스트에 강아지, 고양이가 있고 강아지의 타입 코드는 타입 코드는 A이고, 고양이의 타입 코드는 B인 것을 JSON의 형식으로 위 예시처럼 표현 가능하다. * {}는 객체를 뜻함. * []는 배열을 뜻함. 💎예시2💎 { "동물 리스트" : [ { "name" :..

기타/CS용어 2022.10.17

[ JAVA ] 변수의 초기화란? 변수의 초기화 방법

변수의 초기화란? 변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하다! 하지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다! ✅ 참고 멤버 변수 초기화 : 초기화를 하지 않아도 자동적으로 변수의 자료형의 기본값으로 초기화가 이루어짐. 지역변수 초기화 : 사용하기 전에 반드시 초기화해야 한다. 💎예제💎 class InitTest { int x; // 인스턴스 변수 int y = x; // 인스턴스 변수 void method1 (){ int i; int j = i; } } 위와 같이 코드를 작성하면 에러가 발생한다. [위 코드 내용 정리] x, y는 인스턴스 변수이고, i, j는 지역변수이다. 그중 x..

[ JAVA ] 생성자(Constructor)란?

생성자란? 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다. *인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해 사용된다. 1. 생성자는 어떻게 사용할까? 일단, 생성자는 클래스 내에서 사용되며, 메서드의 구조와 유사하다. 하지만 리턴 값이 없고, 키워드 void도 사용하지 않는다. ✅ 생성자의 조건 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. (키워드 void도 사용하지 않음) * 생성자도 메서드이기 때문에 리턴 값이 없다는 의미의 void를 붙여야 하지만, 모든 생성자가 리턴 값이 없으므로 void를 생략할 수 있게 한 것이다. ❗❕ 생성자에 대한 오해 ❗❕ 필자는 이때까지 생성자가 인스턴스를 생성한다고 생각하..

[ JAVA ] 헷갈리는 용어! 매개변수,인자(parameter)와 인수(argument)

지금까지 인자, 인수, 파라 매터, 매개변수 등 남들에게 얘기할 때 같은 내가 부르고 싶은 대로 불렀는데.. 의미가 다 다른 용어라고 듣게 된 후 너무 헷갈리기 시작했다.. ㅠ 검색하여 알아보니 인자 값 == 매개변수 == parameter 같은 의미 이다. public void aa(int bb){ return bb; } aa(1); aa 함수를 정의할 때 외부로부터 받아들일 변수 bb값을 인자, 매개변수, parameter라고 aa(1); 함수를 호출할 때 사용되는 값들은 인수라고 한다. (1이 인수라고 할 수 있다)

728x90