Java
-
[Java] 추상클래스Java 2022. 3. 20. 17:25
추상메서드는 선언만 있고 구현은 없는 메서드이다. 추상메서드를 하나라도 가진 클래스는 추상클래스이며 abstract로 표시한다. 보통 클래스는 객체를 만들기 위해 사용하는 반면, 추상클래스는 객체를 만들 수 없고 서브클래스를 만드는 용도로만 사용한다. 이제부터 추상클래스가 필요한 경우를 예를 통해 설명하도록 하겠다. 길지만 겹치는 코드부분이 많다. 간단한 다이어리 프로그램을 만들것인데 다음 세가지 사건을 기록하고 읽을 수 있는 프로그램이다. 생일, 개강일 같은 oneday 사건 시작과 끝의 날짜가 있는 duration 사건 데드라인이 있는 deadline 사건 우선 month와 day를 가진 날짜를 나타내는 MyDate클래스를 만들겠다. public class MyDate { public int mont..
-
[Java] Object 클래스 & Wrapper 클래스Java 2022. 3. 17. 17:27
Object 클래스 클래스 Object는 모든 클래스의 슈퍼클래스이다. 따라서 서브클래스들은 Object클래스의 메서드를 사용할 수 있다. (물론 의도에 맞게 오버라이딩 하여야 한다.) 다음은 Object클래스의 멤버 메서드이다. Method Behavior Boolean equals(Object obj) 두 Object의 동일성을 검사한다. int hashCode() 그 객체의 해쉬코드값을 리턴한다. String toString() 그 객체를 표현하는 문자를 리턴한다. ex) 클래스이름@객체의 hash code Class getClass() 그 객체의 클래스를 식별하는 유니크한 객체를 리턴한다. 특정 메서들을 좀 더 살펴보도록 하겠다. Boolean equals(Object obj) Object메서드의..
-
[Java] 상속Java 2022. 3. 15. 05:48
상속 상속은 물려준다는 의미로 어떤 객체의 필드와 메소드를 다른 객체가 물려 받을 수 있는 기능이다. 예를 들어 Computer라는 클래스가 있다고 하자. public class Computer(){ public int ramSize; punlic int diskSize; //생성자 public Computer(int ran, int disk){ ramSize = ran; diskSize = disk; } public int getRamSize(){ } public int getLamSize(){ } } 위 Computer클래스가 가진 속성과 메서드를 다 가지면서 또 다른 특성을 추가하고 싶을때 위 Computer 클래스를 상속받아서 사용하면 된다. 예로 일련번호를 추가로 가지는 Notebook클래스는 ..
-
[Java] static, publicJava 2022. 3. 13. 04:30
static이란 무엇인가. 클래스는 객체의 설계도이다. 따라서 클래스는 실체가 아니고 객체를 생성해야만 데이터를 저장하는 등 실제로 사용할 수 있다. 그러나 예외가 있는데 그것이 바로 static이다. static멤버는 class멤버이고 non-static멤버는 object멤버이다. static멤버는 클래스 내에 실제로 존재하고 객체에는 존재하지 않는다. 만약 아래처럼 Person이라는 클래스가 있고 Person타입 객체인 member1, member2를 생성했다고 하자. 그러면 객체멤버인 a는 객체 각각 생성되지만 클래스멤버인 b는 객체 각각의 것이 아니라 Person클래스에 하나 존재한다. 따라서 member1에서 b에 접근해 값을 3으로 설정한다면 member2에서도 b의 값이 3이 된다. 이때 주..
-
[Java] 클래스, 객체, 생성자Java 2022. 3. 11. 01:47
클래스 클래스란 객체를 정의하는 설계도로 관련있는 필드와 메소드들의 집합체이다. 클래스도 int나 double 처럼 하나의 타입이다. 사용자가 새로 정의한 타입이므로 사용자 정의 타입이라고도 부르며 int a; 처럼 클래스 타입 선언 후 사용한다. int a; Person person1; 객체 객체는 실제로 존재하는 것으로 new라는 명령어를 통해 생성한다. Car car; car = new Car(); #합쳐서 쓰면 Car car = new Car(); Car car; 는 car라는 이름의 참조변수가 생성된 것 일뿐 아무런 참조하는 객체가 없다. 따라서 실질적인 데이터를 저장할 수 없다. car = new Car(); 를 해주면 Car타입의 객체가 힙 메모리에 생성되고 참조변수 car가 새로 생성된 객..
-
[Java] primitive type, reference typeJava 2022. 3. 11. 01:21
자바에서 모든 프리미티브 타입의 변수는 보통 변수이고 변수 자체에 값이 저장된다. 프리미티브 타입 외의 변수는 모두 참조변수로 실제 데이터가 저장될 객체의 주소를 저장한다. 그럼 이제 프리미티브, 논프리미티브 타입이 무엇인지 알아보자. 자바의 프리미티브 타입 논리형 boolean, byte 정수형 short, int, long 실수형 float, double 문자형 char int a; a에 실제값이 저장되고 메소드에 전달되면 사본이 전달되므로 메소드는 원본값이 아니라 복사된 값을 변경할 수 있다. 자바의 레퍼런스 타입(nonprimitive type) 위의 8개를 제외한 자료형으로 배열, 문자열, 클래스 등이 있다. 메소드에 전달되면 주소값을 전달받게 되어 원본 값을 변경할 수 있다. int[] a =..