오늘은 지금까지 배워왔던 수업 중에 가장 난이도 있는 수업이라 할 수 있겠다. 오버라이딩과 상속에 대해 배우면서 클래스를 왔다갔다 수업을 들으니까 너무 헷갈려서 다시 복습하면서 이제야 조금씩 이해가 가기 시작했다. 혹시 이글을 읽는 사람은 "그냥 이랬구나~" 하고 넘어가길 바란다.
클래스명[] 참조변수 = new 클래스명[요소의 개수];
Member[] members = new Member[3]; // 슬롯만 만들어놓은 것
참조변수[인덱스] = new 생성자();
members[0] = new Member();
members[1] = new Member();
members[2] = new Member(); // 매 해당인덱스마다 해줘야 한다.
public class Student {
private int no; // 학생번호
private String name;
private int kor; // 국어점수
private int math; // 수학점수
private int eng; // 영어 점수
public int getNo() {
return no;
}
public int setNo(int no) {
this.no = no;
return no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public void info(){
System.out.println(no + ", " + name + ", " + kor + ", " + eng + ", " + math + ", " + getTotal() + ", " + getAvg());
}
public int getTotal(){ // 총점
return kor + eng + math;
}
public double getAvg(){ // 평균
return (kor + eng + math) / 3.0;
}
}
import java.util.Scanner;
/*
Student 클래스를 활용하여 아래와 같은 프로그램을 작성해보자.
결과)
몇 명의 학생을 등록할까요? 3
1번째 학생의 번호를 입력하세요 1
1번째 학생의 이름을 입력하세요 김사과
1번째 학생의 국어점수를 입력하세요 90
1번째 학생의 영어점수를 입력하세요 80
1번째 학생의 수학점수를 입력하세요 70
2번째 학생의 번호를 입력하세요 2
...
1, 김사과, 90, 80, 70, 총점, 평균
2, 반하나, 100,90,60, 총점, 평균
3, 오렌지, 70, 30,60, 총점, 평균
*/
public class Oop3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("몇 명의 학생을 등록할까요? ");
int n = sc.nextInt();
Student[] students = new Student[n];
for(int i = 0; i< n; i++){
students[i] = new Student();
System.out.print((i+1) + "번째 학생의 번호를 입력하세요 : ");
int no = sc.nextInt();
students[i].setNo(no);
System.out.print((i+1) + "번째 학생의 이름를 입력하세요 : ");
String name = sc.next();
students[i].setName(name);
System.out.print((i+1) + "번째 학생의 국어점수를 입력하세요 : ");
int kor = sc.nextInt();
students[i].setKor(kor);
System.out.print((i+1) + "번째 학생의 영어점수를 입력하세요 : ");
int eng = sc.nextInt();
students[i].setEng(eng);
System.out.print((i+1) + "번째 학생의 수학점수를 입력하세요 : ");
int math = sc.nextInt();
students[i].setMath(math);
}
for(Student st : students){
st.info();
System.out.println();
}
}
}
[public] 클래스 이름(매개변수1, 매개변수2..){
생성자가 호출되면 실행할 문장;
...
}
// 방법 1)
Member(){
}
// 방법 2)
Member(int no){
}
// 방법 3)
public Member(int idx, String userid, String userpw, String name, String gender) {
}
// 방법 4)
Member(String userid){
}
// 방법 5)
Member(double no){
}
→ 멤버변수의 타입만 다르면 얼마든지 같은 이름으로 만들 수 있다.
this.gender= gender;
public class 클래스명 extends 부모클래스명{
.. 클래스 설계
}
class Animal{
//동물 클래스
}
class Dog extends Animal{
// 강아지 클래스
}
public class Instanceof1 {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
Animal ani_dog = new Dog();
System.out.println("animal instanceof Animal : " + (animal instanceof Animal));
System.out.println("animal instanceof Animal : " + (dog instanceof Dog));
System.out.println("animal instanceof Animal : " + (animal instanceof Dog));
System.out.println("animal instanceof Animal : " + (dog instanceof Animal));
System.out.println("animal instanceof Animal : " + (ani_dog instanceof Animal)); // 형 변환 가능
System.out.println("animal instanceof Animal : " + (ani_dog instanceof Dog)); // 형 변환 가능
}
}