본문 바로가기

2-1 학기/OOP8

[JAVA] 컬렉션과 제네릭 컬렉션 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너이다. 특징 컬렉션은 제네릭이라는 기법으로 만들어졌다. 컬렉션의 요소는 객체들만 가능하다. Vector 배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다. 벡터를 생성할 때, Vector의 E에 요소로 사용할 타입을 지정해야 한다. Vector v = new Vector(); 문자열만 다루는 벡터는 다음과 같이 생성할 수 있다. Vector stringVector; stringVector = new Vector(); add() 메소드를 이용하면 벡터의 끝이나 중간에 요소를 삽입할 수 있다. v.add(Integer.valueOf(5));.. 2023. 5. 31.
[JAVA] String 클래스 String 클래스 java.lang 패키지에 포함된 클래스로서 String 클래스는 문자열을 나타낸다. // 스트링 리터럴 String s1 = "abcd"; // 스트링 객체 char data[] = {'a', 'b', 'c', 'd'}; String s2 = new String(data); String s3 = new String("abcd"); 스트링 리터럴: 자바 내부에서 리터럴 테이블로 특별히 관리하여 동일한 리터럴을 공유시킨다. new String(): new를 이용하여 생성되는 다른 객체와 동일하게 힙 메모리에 생성된다. 스트링 객체는 수정이 불가능하다. 다음 코드의 실행 결과 t는 "HelloJava"를 가리틴다. 하지만 s는 변함없이 "Hello" 그대로이다. String s = new.. 2023. 5. 31.
[JAVA] Wrapper 클래스 Wrapper 클래스 int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 JDK에 만들어진 8개의 클래스를 통칭하여 Wrapper 클래스라고 한다. Byte, Short, Integer, Long, Character, Double, Float, Boolean 클래스가 기본 타입에 해당되는 값을 객체로 다룰 수 있게 하는 Wrapper 클래스이다. 기본 타입의 값을 객체로 만들어 사용할 수 있도록 Wrapper 클래스를 제공한다. 객체 생성 Wrapper 객체는 기본 타입의 값을 인자로 하여 다음 예와 같이 정적 메소드인 valueOf()를 호출하여 생성한다. Integer i = Integer.valueOf(10); Character c = Character.valueOf('c').. 2023. 5. 31.
[JAVA] Object 클래스 Object 클래스 생성과 특징 Object는 java.lang 패키지에 속한 클래스이며, 모든 클래스에 강제로 상속된다. Object만이 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스이다. 객체 속성 class Point{ private int x, int y; public Point(int x, int y){ this.x = x; this.y = y; } } public class ObjectPropertyEx{ public static void print(Object obj){ System.out.println(obj.getClass().getName()); System.out.println(obj.hashCode()); System.out.println(obj.toStr.. 2023. 5. 31.
[JAVA] 메소드 오버라이딩(Method Overriding) 메소드 오버라이딩(Method Overriding) 메소드 오버라이딩은 슈퍼 클래스와 서브 클래스의 메소드 사이에 발생하는 관계로서, 슈퍼 클래스에서 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개 변수 리스트를 갖는 메소드를 서브 클래스에서 재작성하는 것이다. 동적 바인딩 슈퍼 클래스의 메소드를 무시하고 서브 클래스에서 오버라이딩 된 메소드가 무조건 실행되도록 처리하는 것을 동적 바인딩이라고 한다. 제약 사항 1. 슈퍼 클래스의 메소드와 동일한 원형으로 작성한다. 슈퍼 클래스의 메소드와 동일한 이름, 동일한 매개변수 타입과 개수, 동일한 리턴 타입을 갖는 메소드를 작성해야 한다. 2. 슈퍼 클래스 메소드의 접근 지정자보다 접근의 범위를 좁여 오버라이딩할 수 없다. 슈퍼 클래스에서 protect.. 2023. 5. 30.
[JAVA] 업캐스팅과 instanceof 연산자 업캐스팅 업캐스팅이란 서브클래스의 객체에 대한 래퍼런스를 슈퍼 클래스 타입으로 변환하는 것을 말한다. 업캐스팅한 래퍼런스로는 객체 내에 모든 멤버에 접근할 수 없고 슈퍼 클래스의 멤버만 접근할 수 있다. class Person{ } class Student extends Person{ } public class UpcastingEx{ public static void main(String[] args){ Person p; Student s; p = s; } } 다운캐스팅 업캐스팅과 반대로 캐스팅하는 것을 다운캐스팅이라고 한다. class Person{ String name; String id; public Person(String name){ this.name = name; } } class Studen.. 2023. 5. 23.
[JAVA] 추상 클래스 vs. 인터페이스 추상 클래스 추상 클래스(abstract class)란 선언은 되어 있으나 코드가 구현되어 있지 않은, 즉 껍데기만 있는 메소드이다. abstract 키워드와 함께 원형만 선언하고 코드는 작성하지 않는다. 추상 클래스(abstract class)가 되는 경우는 다음 2가지이다. 1. 추상 메소드를 포함하는 클래스 abstract class Shape{ public Shape(){ } public void pain() {draw();} abstract public void draw(); } 2. 추상 메소드가 없지만 abstract로 선언한 클래스 abstract class MyComponent{ String name; public void load(String name) { this.name = name.. 2023. 5. 23.
[JAVA] 상속 상속 자바에서 상속이란 아래 클래스가 위 클래스를 상속받아 확장함(extend)을 뜻한다. 부모 클래스는 슈퍼 클래스(super class), 상속받는 자식 클래스를 서브 클래스(sub class)라 부른다. 상속을 선언할 때는 extends 키워드를 사용한다. public class Person{ } public class Student extends Person{ //Person을 상속받는 클래스 Student 선언 } public class StudentWorker extends Student{ //Student를 상속받는 클래스 StudentWorker 선언 } Student 클래스는 Person 클래스의 멤버를 물려받으므로, Person 클래스에 선언된 필드나 메소드를 다시 반복하여 작성할 필요.. 2023. 5. 9.