반응형

분류 전체보기 144

접근제어자(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..

가~위 바위~ 보!

코딩도장 - 가~위 바위~ 보! package may31; import java.util.Arrays; import java.util.Scanner; public class Test01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("몇판 하시겠습니까?");//게임 횟수 int input = sc.nextInt(); int[] result = new int[3];// 승무패 횟수 카운트 char[] result2 = new char[input];//승 무 패 결과값 저장 for(int i = 0; i < input; i++) { int input2; do { System.ou..

반응형