반응형

프로그래밍 62

abstract 추상화, interface 인터페이스, polymorphism 다형성

abstract 추상화 클래스 만드는 목적? -> 인스턴트 생성을 위해 추상화는 클래스를 대략적으로 만드는 것으로 인스턴스를 생성할 수 없다. 자바에서는 추상화라는 개념을 구현할 수 있다. 추상이라는 것은 현실화 되어질 필요가 없는 클래스를 말한다. 자바에서는 객체지향을 통해 프로그램이 실행되는데 이 추상이라는 개념을 클래스에 적용시키면 자신의 인스턴스를 발생시킬 수 없는 형태로 만들어진다. 이렇게 인스턴화 할 필요는 없지만 상속개념에서 중요한 위치를 가지는 클래스를 보통 추상 클래스로 선언하여 사용 추상 클래스 선언 규칙 1. 클래스에 정의된 메소드 중 추상 메소드가 하나라도 있다면 해당 클래스는 무조건 추상 클래스가 된다. 2. 추상 메소드는 메소드 바디가 없는 형태 {} abstract 라는 키워드..

Object 클래스

Object클래스는 java.lang내 최상위 클래스이며 다른 타입들은 기본형 형태로 저장되어있다. 자바가 api를 정의한 모든 클래스와 사용자가 만든 클래스의 최상위 클래스 무든 클래슨느 이 Object를 상속받아서 사용 Object는 자동으로 import된다. Object --- String --- Boolean --- StringBuffer --- Character --- Number --- Byte --- Short --- Integer --- Long --- Float --- Double public class Object01 { public static void main(String[] args) { String str1 = "Hi"; String str2 = new String("Hi"); ..

접근제어자(public, protected, default, private)

자바에서는 접근 제어자를 통해서 각 API의 접근 권한을 제한할 수 있다. 아래는 접근 제어자의 접근 범위를 나타낸 것 public > protected > default(package) > private public : 가장 넓은 범위로 패키지 제한없이 모두 접근 가능한 상태 protected : 같은 패키지내에서 접근 가능, 다른 패키지에서는 상속이나 자식 클래스, 인터페이스라면 접근 가능 default : 아무런 접근 제한을 두지 않을 때 = 같은 패키지내에서는 접근 가능, 외부 패키지에서는 접근 불가 private : 자기 자신 클래스에서만 접근 가능, 그외 모두 막음 주의 : 클래스 앞에 붙는 접근제어자는 public, default만 있다. 번외 : 클래스를 만들 때 어떤 클래스에 public..

인스턴스 멤버, 생성자(Constructor), 정적 멤버(static)

생성자 Constructor 객체를 생성할 때 사용하는 메소드() 클래스가 객체화 되어질 때 실제 객체를 생성해주는 코드 생성자는 이외에도 아래와 같은 기능을 가지고 있다. 1. 클래스의 객체 생성 2. 멤버 필드 초기화 3. 필요에 따라서 초기화 메소드 실행 다시 정리 : 생성자 없이는 객체를 만들 수 없다. 생성자의 형식 생성자는 메소드왕 유사한 형식을 가지고 있다. 하지만 메소드와는 기능적인 부분에서 차이가 있다. 1. 생성자의 이름은 반드시 클래스 이름과 같아야 한다. 2. 메소드가 아니기 때문에 리턴타입을 선언할 수 없다. 기본 생성자(Default Constructor) 자바에서는 모든 클래스마다 컴파일 시에 기본 생성자를 자동으로 생성 단, 클래스에 생성자가 하나라도 있다면 기본 생성자는 제..

자바 - 오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩(Overloading), 오버로드 오버로딩 = 동일한 이름의 함수(메소드)를 여러번 정의하고 사용 가능(파라미터의 수, 순서, 타입이 다르다.) 메소드는 클래스에서 특정기능을 담당하도록 설계되어있다. 컴파일러는 같은 메소드로 중복정의가 있는지 확인한다. 확인 기준 요소 메소드 이름 메소드 파라미터(다시 세가지로 구분) - 파라미터 갯수, 순서, 타입 파라미터 갯수, 순서, 타입 위 세가지 요소를 통칭하여 메소드 시그니처라고 한다. 만약 정의된 메소드 이름과 시그니처까지 같다면 같은 메소드로 인식 에러 발생 (만약 시그니처중 하나라도 틀리면 다른 메소드로 인식) 이렇게 같은 이름의 메소드를 시그니처만 다르게 해서 정의하는 것을 오버로딩(오버로드)라고한다. 호출시에는 반드시 호출하려는 메소드의 시그..

객체지향프로그래밍_OOP, 자바 파라미터에 클래스 전달

객체지향 프로그래밍 OOP 특징 캡슐화 = 보안 = 보호 관련된 데이터(필드)와 기능(메소드)가 하나의 묶음으로 관리 상속 이미 작성된 클래스(부모)를 이어받아서 새롭게 만드는 것 자식 클래스는 부모클래스의 모든 속성(필드)과 동작(메소드) 를 사용할 수 있다. 필요한 기능은 자식 클래스에서 추가해서 사용한다. 추상화 불필요한 것을 제외하고 필요한 것만 유지 실제 객체를 인스턴스화 할때 필요한 내용만 남기고 나머지는 제외하는 것 다형성 객체의 동작이 변경되는 것 파라미터나 상황에 따라 동작이 변경되는 것 자바 파라미터에 클래스 호출 예제 자바8부터 파라미터로 함수를 넣어줄 수가 있다. David 클래스 내에서 Sujan 클래스 내부 함수 호출 class David{ void ask(Sunja s) {//..

객체지향, 객체 , 인스턴스

객체지향 package jun01; //객체지향 public class OOP01 { int number = 90; // 3 변수 선언 = 인스턴스 변수 == 멤버변수, 멤버 필드 //클래스 바디에 생성 //초기화하지 않아도 자바가 알아서 해줌 //클래스에서 사용하기 위해서 생성 public static void main(String[] args) { //3Code : 변수 선언문 = 인스턴스 변수 int app = 0; System.out.println(app);//0 OOP01 oop01 = new OOP01(); oop01.print2();// 점 = 소유 System.out.println(oop01.number);//90 oop01.number = 1000; System.out.println(oo..

자바 배열을 복사하는 방법 (깊은 복사, 얕은 복사)

배열 복사하는 방식 얕은 복사, 깊은 복사 2가지 방식으로 구분 얕은 복사(shallow copy) 한 쪽에서 수정이 발생되면 다른쪽에도 영향을 끼쳐 같아지게 된다. 얕은 복사는 주소값을 복사하기 때문에 주소로 값을 참조하여 값이 변경되면 해당 값을 참조하고 있는 배열들의 값이 변경된다. 복사된 배열이나 원본 배열이 변경될 때 함께 변경(연산자는 얕은 복사 수행) int[] arr01 = {10, 20, 30}; int[] arr02 = new int[3]; arr02 = arr01; arr01[0] = 100; System.out.println(Arrays.toString(arr01));//[100, 20, 30] System.out.println(Arrays.toString(arr02));//[100..

데이터 포맷, 텍스트 포맷, 동적가변배열, 배열 복사

데이터 포맷 Date, Calendar import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class DateFormat01 { public static void main(String[] args) { Date date = new Date(); System.out.println(date);//Mon May 31 09:43:24 KST 2021 Calendar cal = Calendar.getInstance(); System.out.println(cal); System.out.println(cal.get(Calendar.YEAR));//2021 System.out.println(cal.get(Calendar.M..

toString()과 String.valueOf()

toString(), String.valueOf() 두 메소드 모두 오브젝트 값을 String으로 변환 하지만 변경하고자 하는 오브젝트가 null인경우 결과 값이 다름 String.valuOf() - 문자열 null 반환 vauleof() -> NPE 오류 발생, 오브젝트에 담긴 값이 String이 아니여도 출력 두 메소드의 차이는 null값에 따른 NPE 발생 유무 이런 차이점으로 valueOf()의 null 체크 방법은 "null".equals(string)형태로 체크 해야 한다. destItemMap.get("LOWER_VAL") 이 null 일 경우 String lowerCoatingVal1 = String.valueOf(destItemMap.get("LOWER_VAL")); String lowe..

반응형