IT수업/JAVA PART1 27

IT수업 12주차 (30) 상속_interface, 다중 상속

● 인터페이스(interface) - 메서드 : 일반 메서드는 없고 전부 추상 메서드(public abstract)로만 구성한다. abstract를 안적어도 자동으로 추상메서드가 된다는 뜻이다. - 속성 : 일반 멤버 필드는 없고 public static final로 선언된 상수만 있다. - 직접 객체를 생성하는 것은 불가능하고, implements 키워드를 이용하여 다른 클래스로 구현할 때에는 객체 생성이 가능하다. - 구현된 클래스에서는 반드시 추상 메서드를 재정의해야 한다. - 인터페이스 자체가 강제력이 높다. ● 인터페이스 용도 - 낮은 결합도 유지 - 설계 사상을 코딩 단계에서 구현 (인터페이스를 implement하게 되면 추상메소드를 의무적으로 재정의(오버라이딩) 해야하므로 설계단계에서 인터페..

IT수업/JAVA PART1 2024.03.12

IT 수업 12주차 (29) 상속_추상클래스

● 추상메서드 - 정의되지 않고 선언만한 메서드 ● 추상클래스 - 추상클래스는 여러 클래스들 간에 비슷한 필드와 변수, 메서드 등 공통적인 부분을 추출해 만들어진 클래스 - 추상메서드가 포함된 클래스는 반드시 추상클래스로 정의해야 한다.(자식 클래스에서 메서드 정의) - 추상클래스는 객체를 생성할 수 없다. 이유는 아직 실체성이 없고 구체적이지 않기 때문이다. - 공통적인 메서드를 추출해서 추상클래스 안에 두면 됨 그래서 상속을 받을 수 있다. - 사용하는 이유? 프로그램을 구체적으로 어떻게 구현할지 결정이 되지 않았거나, 프로그램을 동일한 규격으로 만들 수 있도록 가이드를 제공하기 위해 사용하며 공통된 필드와 메서드를 통일한 목적도 있다. 또한 실체클래스 구현시 시간을 절약할 수 있다. ※ 추상클래스와..

IT수업/JAVA PART1 2024.03.11

IT 수업 12주차 (28) 상속_업, 다운캐스팅

● 업캐스팅 - UpCasting : 상위클래스 참조변수 = 하위클래스 객체 UpCasting은 상위클래스형으로 형변환을 하는 문법으로 자식 클래스가 부모 클래스 타입으로 캐스팅 되는 것이다. 부모 클래스형의 참조변수를 통해서 하위클래스를 연결하면 된다. 형을 일치시킬땐 괄호()를 사용하지만 (ex. Point2D up = (Point2D) new Point3D ;) 자동형변환 되기때문에 생략가능하다. - 사용하는 이유? 객체를 연결하기 위한 공통된 참조변수가 필요하기 때문에 UpCasting을 한다. 또한, 상위클래스에서 메소드들을 잘 정의하면 상속받는 모든 하위클래스에서 이 메소드들을 오버로딩하여 활용할 수 있기 때문에 다형성이 생긴다. ● 다운캐스팅 - DownCasting : 하위클래스 참조변수 ..

IT수업/JAVA PART1 2024.03.11

IT 수업 11주차 (26) 상속

● 상속 - 물려주는 것 - 상위(부모, Super) 클래스의 속성과 기능을 하위(자식, sub)클래스에서 그대로 물려받아 사용할 수 있도록 허용한 문법 - 받은 하위클래스는 상위클래스의 속성과 기능 이외의 멤버를 추가할 수 있다. - 받은 하위클래스는 상위클래스의 기능을 다시 고쳐 사용할 수 있다(오버라이딩) - extends예약어 사용 ● 상속 사용 이유? 1. 확장성 2. 유지보수 3. 가독성 4. 코드 중복 최소화 ● extends, implements와 abstract 구별 - extends : 부모에서 선언과 정의를 모두 하며 자식은 메소드와 변수를 그대로 사용할 수 있다. - implements (interface 구현) : 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의..

IT수업/JAVA PART1 2024.03.08

IT 수업 11주차 (24) 배열

● 배열 - 동일한 데이터타입의 여러값들을 저장하기 위한 자료구조 - 동적확장이 불가능하다 -> 컬렉션으로 대체 가능함 - 비교적 사용 효율이 떨어짐 ● 배열, 배열길이 확인하기 ● 배열 확인하기 이렇게 하면 사용자가 직접입력한 값을 얻을 수 있다. ● 배열의 최댓값, 최솟값 구하기 또다른 방법으로 확인하기 ● 얕은 복사(주소 복사) ● 깊은 복사( 값 복사) ● 1차원, 2차원 배열 - 1차원 배열 : 해당 자료형을 요소단위로 정한다 - 2차원 배열 : 1차원 배열을 요소단위로 정한다 - int arr[][] = new int[2][3]; 여기서 첫번째 []는 행이고 두번째 []은 열이다. ..

IT수업/JAVA PART1 2024.03.07

IT 수업 11주차 (23) String

● 기본 문자열 비교하기 - 1번째는 주소가 같기 때문에 true가 나온다. - 2번째는 참조변수 안에 있는 주소 값을 비교한다. - str3와 str4는 각각 다른 힙이라는 공간의 메모리 영역에 값이 들어가서 주소를 가리킨다. ● 위치값 비교, 문자열 비교 위치값을 비교할 땐 System.identityHashCode();를 사용해서 했다. System.identityHashCode(); 는 객체의 주소를 기준으로한 해시 값을 리턴받을 때 사용한다. equals를 사용하며 문자열을 비교한다. equals는 최상위의 object에서 물려받은 것이다. ● 문자열 확인 ● 위치 찾기 System.identityHashCode(); 사용 문자열을 덧붙이는 작업을..

IT수업/JAVA PART1 2024.03.07

IT 수업 11주차 (20) 객체지향_정보은닉(getter,setter)

● 정보은닉 객체지향언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법 기법에는 대표적으로 3가지가 있다. - 업캐스팅 : 객체의 구체적인 타입 은닉 - 캡슐화 : 객체의 필드 및 메소드 은닉 - 인터페이스 & 추상 클래스 : 구현 은닉 ● 접근 한정자 : 멤버 or 클래스의 접근범위를 제한을 위한 예약어 - public : 모든 클래스에서 접근 가능 - private : 해당 클래스에서만 접근 가능 - protected : 상속 관계를 가지는 경우에 접근가능 - default(기본) : 동일 패키지에 속한 클래스에서 접근가능 (다른 패키지에서 사용하고 싶으면 import를 사용하여 특정위치를 나타내면 된다.) 객체를 생성 할 때는 직접 접근하지 못하도록 private하게 주..

IT수업/JAVA PART1 2024.03.06

IT 수업 11주차 (21) 객체지향_캡슐화

● 캡슐화 어떤 기능을 수행하기 위해 여러 작은 작업들을 묶어놓은 것으로 변수나 메소드들을 캡슐로 감싸 안보이게 하는 것이다. 정보은닉을 수반함 순서에 맞게 실행되기 때문에 작업을 면밀히 파악한 후 사용해야 한다. - 특정 목적을 가지는 기능을 구현하는데 필요한 세부 기능들을 묶어서 처리하는 방법 - 특정 목적을 가지는 기능 구현에 있어서 각 과정의 일부나 전부가 외부로 노출되는 문제를 막기 위해서 정보은닉을 수반한다.(필수는 아님) - 캡슐화 작업은 각 공정과정에 대한 정확한 이해가 수반되어야 한다. - 또한, 잘못된 접근으로 값이 변하는 의도치 않는 동작을 방지하는 보호효과도 있다. 예시 1) 예시 2)

IT수업/JAVA PART1 2024.03.06

IT 수업 11주차 (19) 객체지향_ 생성자 함수

● 생성자 함수 ● 생성자 메서드? - 객체를 생성하는 것, 만들어진 객체 내에서는 사용할 수 없지만 객체 생성하는 시점에서는 계속 쓸 수 있음 - 객체 생성시에 한번 호출되는 특수한 형태의 메서드 - 객체 생성시에 1회 호출 - 생성된 객체 내에서는 사용이 불가 - 객체 생성시에 필요한 메모리 공간형성과 초기값 부여에 사용 - 생성자 함수는 클래스명과 동일하며 반환자료형을 가지지 않는다. - 생성자 함수를 클래스 내에 명시하지 않으면 컴파일러에 의해 주입되는 생성자가 있는데 이를 디폴트 생성자라고 한다 - 디폴트 생성자는 모든 멤버변수의 초기값을 0(or false null) 으로 지정 - 생성자 함수는 함수니까 오버로딩이 가능하다. ● 객체를 생성할 때 해당 필드를 외부에서 받은 값으로 초기화하기 위..

IT수업/JAVA PART1 2024.03.06