1. 객체의 배열
클래스이름 참조변수 = new 클래스이름[요소의갯수];
int[] arr = new int[3];
arr[0] = 10;
Student[] arr = new Student[3]
// arr[0] = student[0].setNo(1) 이런식으로 저장하면 안된다!
=> Student객체 세개를 저장할 배열(방)을 만든것(heap)!
=> Student객체도 생성해야함!
Student[] arr = new Student[3];
arr[0] = new Student(); //이렇게 객체도 생성해야함!
arr[0].setNo(1);
arr[0].setName("김사과");
...
arr[1] = new Student(); //이렇게 객체도 생성해야함!
arr[1].setNo(2);
arr[1].setName("반하나");
...
2. Object 클래스
- java.lang.Object
- 모든 클래스의 최상위 클래스
- 모든 클래스는 Object 클래스의 메소드를 사용할 수 있고, 일부 메소드를 오버라이딩해서 사용
- Object 클래스가 들어있는 java.lang 패키지는 컴파일러에 의해 자동으로 import 됨
toString()
- 객체의 해시코드(주소) 출력
- 패키지명.클래스명@해시코드
- getClass().getName() : 패키지명 + 클래스명
- Integer.toHexString(hashCode()) : 해시코드
- 객체의 정보를 문자열 형태로 표현하고자 할 때 오버라이딩을 자주 하는 편
equals()
- 객체의 값이 같은지 연산 (주소비교가 아닌 값 비교)
clone()
- 객체의 복사본을 만듬
- clone()은 객체를 복제할 때 private 필드도 복제하기 때문에 객체지향 프로그래밍 은닉화에 위반
=>그래서 잘 안씀
3. 상속
- 특정 클래스를 구성할 때 기존 클래스의 데이터와 메소드를
부모 클래스에서 그대로 물려받아 중복적인 코드를 줄이는 것
- 하나의 변수 타입으로 여러 종류의 객체를 의미하는 추상화된 방식의 프로그램을 가능하게 해줌
- 자식클래스(subclass): 상속을 받는 클래스
- 부모클래스(parent, super class): 상속을 해주는 클래스
접근제어자 class 클래스명 extends 부모클래스명{
}
4. 업캐스팅과 다운캐스팅
- 캐스팅(casting): 타입을 변환하는 것 -> 형변환
- 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능
- 업캐스팅: 자식 클래스가 부모 클래스로 형변환되는 것
- 다운캐스팅: 부모클래스에서 다시 자식클래스로 복구시키는 것(원상태로 돌리는 것)
class Person{
String name;
Person(){}
Person(String name){
this.name = name;
}
}
class Student extends Person{
String no;
}
public class Main{
public static void main(String[] args) {
Student student = new Student(); // name(o), no(o)
Person person = student; // 업캐스팅
person.name = "김사과";
person.no = 10; (X)
}
}
public class Main{
public static void main(String[] args) {
Person person = new Student();
Student student = new Person(); // (X)
//다형성은 틀은 같지만 내용은 다양하게 => 오버라이딩은 되지만 새로운 메소드나 필드를 추가할수없다
Student student = (Student)person; // 다운캐스팅
student.name = "김사과"; (ㅇ)
student.no = 1; (ㅇ)
}
}
5. instanceof 연산자
- 부모를 상속해서 만들어진 자식 객체가 여러 타입인 경우에
특정 클래스가 맞는지 확인하기 위해 사용하는 메서드
- 참조변수가 참조하고 있는 인스턴스(객체)의 실제 타입을 알아보기 위해 사용
- 연산 결과는 boolean 값으로 반환
참조변수 instanceof 클래스명
(보통 자식 instanceof 부모 )
과제.
Student 클래스를 만들어 아래와 같은 프로그램을 만들어보자
(단, 출력은 toString()을 오버라이딩해서 작성)
몇명의 학생을 등록할까요? 3
1번째 학생의 번호를 입력하세요. 1
1번째 학생의 이름를 입력하세요. 김사과
1번째 학생의 국어점수를 입력하세요. 100
1번째 학생의 영어점수를 입력하세요. 80
1번째 학생의 수학점수를 입력하세요. 90
2번째 학생의 번호를 입력하세요.2
...
3번째 학생의 수학점수를 입력하세요. 100
int[] arr = new int[];
학생리스트**toString을 입력해서 출력
번호:1, 이름:김사과, 국어점수:100, 영어점수:80, 수학점수 70, 총점:250점, 평균:82
번호:2, 이름:반하나, 국어점수:100, 영어점수:80, 수학점수 70, 총점:250점, 평균:82
번호:3, 이름:오렌지, 국어점수:100, 영어점수:80, 수학점수 70, 총점:250점, 평균:82
...
반응형
'서버&백엔드 > 🔥 JAVA' 카테고리의 다른 글
Java | 제네릭, 컬렉션프레임워크 (1) | 2022.10.05 |
---|---|
Java | 래퍼클래스,static,추상클래스,인터페이스,패키지 (1) | 2022.10.04 |
Java | 메소드,main,OOP,클래스,생성자 (0) | 2022.09.29 |
Java | 배열,String클래스,유용한메소드 (0) | 2022.09.28 |
Java | 반복문,Math,배열 (0) | 2022.09.27 |