본문 바로가기

Java

(54)
상속 상속시 protected로 접근권한 세팅. 상위 클래스의 멤버 변수 및 메소드를 전부 사용 가능한데, 그냥 자기것처럼 쓰면 됨. protected는 클래스에서 만 접근 가능한게 아니고, 하위 클래스의 인스턴스라면 그냥 public처럼 접근 가능. 하위 클래스는 상위클래스가 먼저 생성된 후에 생성됨. 하위 클래스는 생성자에 아무것도 안써주면 super() 가 자동으로 호출 됨. ->default 생성자를 호출 하지만 상위 클래스가 기본 생성자가 없고 매개변수로만 받는 생성자만 존재 한다면 super()도 그 매개변수 타입에 맞도록 명시해서 직접 호출해 줘야함. this () 자신의 기본 생성자 호출 super () 상위 클래스 기본 생성자 호출
자바 연습 (static 객체) public class Company { private int id; private static int serial = 10001; private static Company instance = new Company(); public static Company getInstance() { return instance; } public Card createCard() { Card card = new Card(serial++); return card; } private Company() { } } ---- public class Card { private int cardnum; public Card(int serial) { cardnum = serial; } public int getCardNumber() {..
자바 연습 (Array List) ArrayList의 사이즈는 length가 아닌 size ArrayList list = new ArrayList(); list.get(0); =>첫번째 스트링을 꺼내옴. remove(index); 인덱스의 부분 반환. ArrayList에서 삭제됨. public class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Student { private String name; ArrayList list = new ArrayLis..
다차원 배열 2차원 배열 int[][] arr = new int[]][]{{1,2,3},{4,5,6}}; arr.length 는 행의 개수 2 arr[0].length 는 열의 개수 3 =>1차원 배열 취급.
깊은 복사 & 얕은 복사. 카피를 해주면 한쪽을 바꿨을때 나머지도 바뀜. => 얕은 복사 인스턴스가 새로 생긴게 아니고 주소를 복사한거라서 한쪽이 참조해서 바꿔주면 나머지도 같은 주소를 참조하므로 같이 바뀜. System.arraycopy(); 인스턴스를 구분지으므로 한쪽이 변경된다고 해서 나머지가 바뀌진 않음. => 깊은 복사 배열 인덱스당 하나하나 인스턴스를 생성 해 준 다음에 get set함수로 진짜 데이터 값을 넣어서 복사 해 주어야함.
기본형 배열 & 참조형 배열 int[] arr = new int[10]; arr = {1,2,3}; 또는 생성과 동시에 초기화 int[] arr = new int[]{1,2,3}; int[] arr ={1,2,3}; 하지만 int[] arr; arr ={1,2,3} 불가능. 기본자료형 선언만 했을 땐 0 들어가고, 참조자료형 (객체) 선언만 했을 때 null 들어감. System.arraycopy(arr1,0,arr2,1,3) =>arr1의 0번째에서 3개를 arr2의 1번째부터 복사 Book copyLibrary = new Book(); for(Book book :copyLibrary) { } 타입을 쓰고 변수하나 지정해주고 그 옆에 참조할 배열을 지정해주면 그 배열을 전부 돌면서 하나하나를 book에 넣겠다는 의미.
static method static 변수 설정시 staic메모리에 생김. static변수는 클래스 이름으로 참조해서 사용. static method = class method static method 는 instance 생성 상관 없이 생성됨. 따라서 static method 안에서 instance 변수를 사용 X 인스턴스 method안에서는 static변수 사용 가능. -> 인스턴스 method는 new 됐을 때 생성되는 건데 이때 static이 생성되지 않을리가 없기 때문에 but static이 생성되었다 해도 new가 호출되지 않을 수 도 있으므로 사용 불가
Static & Singleton Company 인스턴스를 하나만 만들고 싶으면 생성자를 private으로 선언하고 getinstance라는 함수를 만들어 주는데 public static으로 만들어서 인스턴스 생성없이도 호출 가능하도록 만들고, 그 안에는 Company class 내부에서 private 생성자로 만든 인스턴스를 반환하도록 한다. 그러면 다른 클래스에서 만들때는 Company company = Company.getinstnace() 이렇게 new를 사용하지 않고 만들게 되고 몇개를 만들던지 같은 인스턴스를 참조함. =>한 클래스 파일 내에서 다른 걸 만들어 봐야 같은 인스턴스를 가져옴. Singleton이라고 함. public class Company { private static Company instance = new ..