반응형

자바 15

[JAVA] Generic이란??

Generic이란?? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 class Person { public T info; } public class GenericDemo { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); } } T 는 info 필드의 데이터 타입입니다. Person 클래스를 정의하는 시점에서는 info의 데이터 타입을 명시적으로 지정하지 않고 있다가 Person을 인스턴스화 할때 안에 구체적인 데이터 타입인 을 언급하면 는 String이 되고 info의 데이터 타입은 String을 갖게 된다는 뜻입니다. 그럼 자연스럽게 인스턴스를 담아낼 수 있는 p1의 데..

[Programming] 자바와 자바스크립트 공통점과 차이점

자바와 자바스크립트, 개발 공부를 처음 시작하면 자바와 자바스크립트라는 이름의 '자바' 때문에 두개가 비슷하거나 같다고 생각할 수도 있다. 한 번씩 커뮤니티나 질문이 올라오는걸 보면 자바 게시판에 자바스크립트 질문 글이, 자바스크립트 게시판에 자바 질문이 올라오는 걸 종종 볼 수 있다. 자바와 자바스크립트 역사를 간단하게 살펴보면 이렇다. 자바는 Sun에서 개발한 언어로 자바스크립트보다 먼저 나왔다. 자바스크립트는 NetScape 사에서 개발하였고 초기엔 Mocha, LiveScript라는 이름으로 변경되었지만 자바가 인기가 많아짐에 따라 자바스크립트라는 이름을 쓰게 되었다고 한다. 그래서 자바와 자바스크립트는 엄연히 태생부터 다른 언어라고 볼 수 있다. 다만 공통점 몇 개를 살펴보자면 이렇다. 자바 v..

Programming 2022.06.19

[JAVA] 인터페이스란?? 인터페이스의 작성, 구현 / 인터페이스의 상속 / 인터페이스의 다형성 / 인터페이스의 장점

인터페이스(interface)란? 추상 메서드의 집합 실제 구현된 것이 없는 기본 설계도. 추상 메서드와 상수만을 멤버로 가질 수 있다. 두 대상(객체) 간의 연결, 대화, 소통을 돕는 중간 역할을 한다! 선언(설계)와 구현을 분리시키는 것을 가능하게 한다!! 인터페이스와 추상 클래스의 공통점 추상메서드를 가지고 있다! (미완성 설계도) 인터페이스와 추상 클래스의 차이 인터페이스는 추상 메서드의 집합, 추상 클래스는 추상 메서드만 가지고 있음! 인터페이스는 iv를 가질 수 없다. 그럼 우리는 왜 인터페이스를 사용할까? 클래스 작성에 도움을 줄 목적으로 사용된다!! 인터페이스의 작성 클래스 대신 인터페이스를 사용한다는 것 외에 클래스 작성과 동일 interface nameOfInterface { publi..

[JAVA] 추상 클래스란? / 추상 메서드란?? / 추상 클래스의 작성

추상 클래스가 뭔지 알기 전에 추상 클래스를 왜 사용하는지부터 알아보자 추상화라는 뜻은 불명확하고 애매하다라는 의미를 가지고 있다. 왜 우리는 이런 불명확하고 애매한 추상 클래스를 사용할까?? 바로 변경에 유리하기 때문이다. 추상 클래스란(abstract class)? 클래스가 설계도라면 추상 클래스는 '미완성 설계도' 추상 메서드를 포함하고 있는 클래스 abstract class Player { int currentPos; // 현재 Play 되는 위치를 저장하기 위한 변수 Player() {// 추상클래스도 생성자가 필요 currentPos = 0; } } abstract void play(int pos); // 추상메서드 abstract void stop();// 추상메서드 void play() {..

[JAVA] 오버라이딩이란?? / 오버라이딩 vs 오버로드

자바는 객체지향언어(OOP)이다. 객체지향언어는 몇가지 중요한 개념을 가지고 있는데 이번 포스팅은 그중 하나라고 볼 수 있는 '오버라이딩(overriding)'에 대해서 정리해보려고 한다 오버라이딩(overriding)이란?? 오버라이딩이란 조상클래스로부터 상속받은 메서드의 내용을 변경하는 것이다 class Point{ int x; int y; String getLocation(){ return "x :" + x + ", y : " + y; } } class Point3D extends Point{ int z; String getLocation() {//오버라이딩 return "x :" + x + ", y : " + y + ", z : " + z; } } 2차원좌표 위치인 Point class에서 3차원..

[JAVA] 변수 초기화란? / 명시적 초기화 / 변수의 초기화 시기와 순서

변수를 선언하게 되면 우리는 선언한 변수에 값을 저장해줘야 한다. 경우에 따라 선택적이기도 하지만, 가능하면 선언과 동시에 변수를 선언해주는 것이 좋다! 이런 변수를 선언하고 값을 저장해주는 것을 초기화(initialization)라고 한다! 변수의 초기화(initialization) 변수를 선언하고 처음으로 값을 저장하는 것 initialization : 초기치 설정 (전산학) 변수는 인스턴스 변수(iv)와 지역변수(lv)로 나눠지는데 변수마다 초기화 방법이 조금씩 다르다 class InitTest{ int x;// 인스턴스 변수 iv int y = x;// 인스턴스 변수iv void method(){ int i;// 지역변수 lv int j = i; // 에러 } } 위 에러가 난 이유는 지역 변수를..

[JAVA] this()와 this 의 차이점!

this()와 this 의 차이점! 우리는 자바를 공부하다보면 this()와 this를 볼 수 있는데 처음에는 '이게 같은건가?'라는 생각을 할 수 있지만 엄연히 둘은 전혀 관계가 없는 생성자와 참조변수이다! this( ) 생성자 생성자의 이름, 클래스 이름 대신 this를 사용한다 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출 가능 Car(String color) { door = 5;// 에러1 Car(color, "auto", 4);// 에러2 } 에러1. 생성자의 두 번째 줄에서 다른 생성자를 호출함 에러2. this(color, "auto", 4); 로 클래스 이름 대신 this를 사용해야함 this 참조변수 인스턴스 자신을 가리키는 참조 변수 지역변수(lv)와 인스턴스 변수(..

[JAVA] 생성자(Constructor) / 생성자의 조건 /기본 생성자(defualt Constructor)

생성자(Constructor)란?? 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다 Time t = new Time(); // 객체 생성 // iv 초기화 t.hour = 12; t.minute = 34; t.second = 56; Time t= new Time(12, 34, 56); // 생성자 호출 생성자는 메서드와 유사하지만 리턴값이 없다는 점이 다르다! 생성자의 조건 생성자의 이름과 클래스의 이름은 같아야 한다 생성자는 리턴값이 없다 (void 안씀) ※ 생성자도 메서드이기 때문에 리턴값이 없다는 의미의 void를 붙여야 하지만, 모든 생성자가 리턴값이 없으므로 void는 생략한다 Card c = new Card(); 연산자가 new에 의해서 메모리에 Card 클래스의 인스턴..

[JAVA] 오버로딩(overloading)이란?? 메서드 오버로딩 / 오버로딩의 조건 / 오버로딩의 예

자바에는 오버로딩(overloading)이라는 개념이 있다! 뒤에서 설명하겠지만 비슷한 용어의 오버라이딩(overriding)도 있다 둘이 이름은 비슷하지만 전혀 다른 개념이므로 추후에 따로 설명하겠다 오버로딩(overloading)이란??? 한 클래스 내에 같은 이름의 메서들을 여러개 정의하는 것을 메서드 오버로딩(method overloading) 줄여서 오버로딩(overloading)이라고 한다 overload의 사전적 의미는 '과적하다' 라는 뜻이다. 보통 하나의 메서드에는 하나의 기능만 구현하는데, 하나의 메서드에 여러 기능을 구현해서 붙혀진 이름이라 볼 수 있다 오버로딩의 조건 메서드 이름이 같아야 한다 위에서 정의한 의미대로 하나의 메서드에 여러개를 정의하는 것으로 이름은 당연히 같아야 한다..

[JAVA] 기본형 매개변수와 참조형 매개변수

기본형 매개변수 변수의 값을 읽기만 할 수 있음(read only) 참조형 매개변수 변수의 값을 읽고 변경 할 수 있음(read & write) 아래 예제를 통해서 어떤 차이가 있는지 확인해 볼께요! class Data {int x;} class ParameterTest{ public static void main(String[] args) Data d = new Data();//객체 생성 d.x = 10; System.out.println("main() : " + d.x); change(d.x); System.out.println("After change(d.x)"; System.out.println("main() : x =" + d.x) } static void change(int x) {// 기본형..

반응형