Old/JAVA 24

JAVA 추상클래스(abstract)

추상클래스란 설계도에 비유한다면 미완성 설계도에 비유할 수 있다. 이뜻은 아직 완성되지 않은 부분이 있다는 뜻인데 완성되지 않은 부분은 메서드이고 이렇게 미완성으로 남겨둔 메서드를 추상메서드라고 한다. 즉 일부러 미완성인체로 남겨둔 메서드는 추상메서드이고 추상메서드를 갖고 있는 클레스를 추상 클레스라고 한다. 추상클레스와 추상메서드의 사용법이다. 둘 다 abstract를 붙여주고 추상 메서드의 경우에는 코드블럭을 사용하지 않는다. 그렇다면 추상메서드를 사용하는 이유는 무엇일까? 추상클레스의 사용 목적은 추상클레스를 상속받는 자식클레스의 틀을 만들어주는 것 이다. 추상메서드를 포함하는 추상 클레스는 위의 보기와 같이 객체화가 불가능하다. 따라서 추상클레스를 상속받는 클레스는 반드시 추상메서드를 구체화해야 ..

Old/JAVA 2018.09.04

JAVA 다형성(polymorphism)

다형성이란 하나의 객체가 여러타입을 가질 수 있는 것을 의미함. 자바에서 다형성은 부모타입의 참조변수로 자식 클래스의 인스턴트를 참조 할 수 있는 것으로 구현하고 있다. Parent 클래스와 Parnet 클래스를 상속받는 Child 클래스가 있다. 참조변수가 Parent인것은 Parent 인스턴트를 참조 할 수 있다.(멤버의 개수 = 인스턴트 멤버의개수) 참조변수가 Child인것은 Child 인스턴트를 참조 할 수 있다.(멤버의 개수 = 인스턴트 멤버의개수) 참조변수가 Parent인것은 Child 인스턴트를 참조 할 수 있다.(멤버의 개수 인스턴트 멤버의개수) => 부모타입의 참조변수로 자식타입의 인스턴트를 참조할 수 있지만, 자식타입의 참조변수로 부모타입의 인스턴트를 참조 할 수 없다. + 참조변수가 ..

Old/JAVA 2018.08.22

JAVA this와 super 키워드

this란 현재 클래스의 인스턴트를 가르킨다. 메서드 사용시 매개변수와 인스턴트 변수의 이름이 같을때 이를 구분해주기 위해서 this.변수명을 사용하면 인스턴트 변수와 매개 변수를 구분할 수 있게 된다. super는 부모클래스를 가르킨다. 부모클래스를 상속받는 자식클래스에서 부모클래스의 인스턴트변수나 메서드를 제어할때 사용한다. this()란 자기 자신의 생성자를 호출할때 사용한다. super()은 자식클래스에서 부모 클래스의 생성자를 호출할때 사용한다. 키워드 this부터 살펴보자 클래스 A에 선언된 String형 변수 str과 String을 매개변수로 갖는 A생성자의 매개변수 str이 서로 이름이 같다. 따라서 이를 서로 구분해줄 필요가 있기 때문에 this를 사용해서 구분했다. this.str = ..

Old/JAVA 2018.08.22

JAVA 상속

상속이란 사람의 사망에 의한 재산 및 신분상의 포괄적인 승계를 말한다. 자바에서 상속이란 어떤 클래스의 필드와 메서드를 다른 클래스에게 물려주는 것을 뜻하는데 물려주는 클래스를 부모클래스 필드와 메서드를 받는 클래스를 자식클래스라고 한다. 부모클래스로부터 필드와 메서드를 상속받은 자식클래스는 부모의 필드와 매서드를 자기것 처럼 사용할 수 있다. 상속의 형식 자식클래스명 extend 부모클래스명 자식클래스명에 extend로 부모클래스명을 연결해서 사용한다. Parent 클래스는 변수(money, house)와 메서드(add)로 이루어져 있다. Child 클래스는 Parent를 상속받고 변수(car, bike)를 가지고 있다 Descendent 클래스는 Child를 상속받고 변수(job)을 가지고 있다. D..

Old/JAVA 2018.08.21

JAVA Static(정적변수와 정적메서드)

정적변수 정적변수는 변수를 정의할때 앞에 static을 붙여서 사용한다. static 데이터형 변수이름 = 초기화; 같은 클래스에서 객체를 만들때 각각의 객체는 자신만의 필드를 갖는데 이들 필드는 객체(인스턴스)마다 별도로 생성되기 때문에 인스턴트변수라고 한다. 객체를 만들때 만들어진 객체는 각각의 별도의 기억공간을 갖게 되며 각 객체마다 서로 다른 값을 갖는다. 그러나 static으로 선언된 변수는 모든 객체에서 값을 공유하기 때문에 정적변수 라고 한다. 즉 하나의 클래스는 인스턴트변수(객체 생성시 각각의 값을 갖는 변수)와 정적변수(만들어진 모든 객체가 값을 공유하는 변수) + 메서드로 이루어져 있다. 정적변수의 접근 방법 사실 변수가 올라가는 영역은 static영역과 heap영역이 있는데 인스턴트 ..

Old/JAVA 2018.08.21

JAVA 초기화와 생성자

초기화란 어떤 일을 시작하기 전에 준비를 하는 것을 말하고 생성자는 지정한 값을 초기화 해주는 역활을 한다. 생성자의 형식은 public 클래스이름(매개변수){초기화} 이다. NoteBook이라는 객체를 생성하면 생성자가 호출된다. NoteBook notebook = new NoteBook(매개변수) // 생성자 호출 객체를 만들때 매개변수에 어떤 것을 넣느냐에 따라서 실행되는 생성자가 달라지지만 객체를 생성하면서 생성자를 실행하는 것에는 변함이 없다. 생성자의 특징 1. 반환값이 없다(void도 사용하지 않음) 2. 생성자의 이름은 클래스의 이름과 동일 3. 생성자는 매개 변수에 따라서 여러개를 만들 수 있다.

Old/JAVA 2018.08.21

JAVA 오버로딩(Overloading)

오버로딩(Overloading)이란 같은 클래스 내에서 같은 이름의 함수를 매개변수를 다르게 하여 사용하는것 입니다. 위의 예시와 같이 세 함수의 이름은 모두 Robot 입니다. 하지만 매개변수의 개수가 다릅니다. 즉 Robot(매개변수) 매개변수에 따라서 어느것이 실행되는지가 결정됩니다. Robot()을 호출하면 마지막 메서드가, Robot("봇봇")을 호출하면 두 번째 메서드가 실행됩니다. + 매개변수의 개수 or 매개변수의 타입 or 매개변수의 순서가 반드시 달라야합니다. 오버로딩과 오버라이딩 이름이 비슷하여 같이 설명하는 경우가 있는데 결론만 이야기하자면 둘은 전혀 상관이 없습니다 오버로딩은 같은 이름의 함수를 매개변수를 달리하여 사용하는것이고 오버라이딩은 상속에서 부모(super) 클래스에서 정..

Old/JAVA 2018.08.20

JAVA 클래스와 객체

클래스와 객체 간단하게 말하자면 클래스는 설계도이고 객체는 클래스(설계도)로 만든 하나의 객체(사물)이라고 생각할 수 있습니다. 자동차로 예를 들자면 자동차의 설계도는 클레스이고 완성된 자동차는 객체로 볼 수 있습니다. 객체는 객체안의 변수(field)와 객체안의 함수(method)로 이루어져 있습니다. Robot 클래스는 name, goal라는 필드와 Robot(Stirng,String) ,Robot(String), Robot()이라는 메서드(정확히는 생성자와 오버로딩된 생성자)로 이루어져 있습니다. 로봇의 설계도로 로봇을 만드는 것을 객체화 라고 합니다 객체화 방법은 클래스명 변수명 = new 클래스명(); 입니다. 여기서 new 연산자는 객체를 메모리에 할당해주는 역할을 합니다.(실체화라고 생각하면..

Old/JAVA 2018.08.20

JAVA 2차원 배열

2차원 배열의 형식은 앞에서 알아본 1차원 배열의 형식과 같다 1. 자료형[][] 배열명 = {자료}; 2. 자료형 배열명[][] = new 자료형[][]{자료}; 3. 자료형 배열명[][] = new 자료형[개수][개수]; 으로 나타낼 수 있다. String[][] royal = {{자료형1},{자료형2},{자료형3},{자료형4}}; // 자료형마다 4개씩 들어있다. String[][] royal = new String[][] {{자료형1},{자료형2},{자료형3},{자료형4}} // 자료형마다 4개씩 들어있다. String[][] royal = new String[4][4] 세개 모두 같다고 볼 수 있다. 그리고 for문을 이용해서 2차원 배열을 초기화 하면서 출력한 결과이다.(위에 부분은 짤림) 2..

Old/JAVA 2018.08.20

JAVA 향상된 for문

데이터 타입이 float인 value라는 배열을 10개 만들었다. value[0]에는 50.0이 value[1]에는 60.0이 value[2]에는 70.0을 대입했고 for문을 통해서 value[3]~value[9]까지는 100.0을 대입했다 배열은 0부터 시작하기 때문에 10개를 선언하면 value[0]~value[9]까지 10개가 선언된다. value.length = 배열의 크기를 반환해준다. 즉 10을 반환한다 마지막으로 for문을 이용해서 value[0]~value[9]까지 출력해준다. 출력 결과이다. 출력부분만 향상된 for문으로 바꾸어 실행해보았다 같은 결과가 출력되는것을 확인 할 수 있다 향상된 for문의 형식은 for(타입변수 : 배열){실행문} 으로 나타낼수 있다. 향상된 for문에서 주..

Old/JAVA 2018.08.20