상속
: 클래스 간의 상호작용
다른 클래스가 가지고 있는 정보를 자신이 포함하겠다는 의미
하나의 사람을 의미하는 Person 클래스를 생성
Person을 상속받아 하나의 학생을 의미하는 Student 클래스를 의미
Student 클래스를 이용하여 객체를 생성
이클립스 각각의 변수에 접근 방법
우클릭 - Source - Generate Getters and Setters - 다 클릭 - Select All
생성자 만들기
우클릭 - Source - Generate Constructor using fields - 다 클릭 - okay
Person.java
public class Person { private String name; private int age; private int height; private int weight; // 각각의 변수에 접근할 수 있다 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age){ this.age = age; } public int getHeight() { return height; } public void setHeight (int height) { this.height = height; } public int getWeight() { return weight; } public void setWeight (int weight){ this.weight = weight; } // 생성자 : 하나의 인스턴스를 만들 때 자동으로 그 인스턴스가 가지는 각각의 변수들을 한 번에 초기화해주는 함수 public Person (String name, int age, int height, int weight) { super(); // 자신의 부모클래스에 생성자를 실행하겠다는 의미 this.name = name; this.age = age; this.height = height; this.weight = weight; } } |
Student.java
public class Student extends Person { // Student 가 Person에서 상속을 받았다. private String studentID; private int grade; private double GPA; public String getStudentID() { return studentID; } public void setStudentID(String studentID) { this.studentID = studentID; } public int getGrade() { return grade; } public void setGrade (int grade){ this.grade = grade; } public double getGPA() { return GPA; } public void setGPA(double gPA) { GPA = gPA; } public Student(String name, int age, int height, int weight, String studentID, int grade, double gPA) { // 자신이 상속 받은 변수 또한 한 번에 초기화 super (name, age, height, weight); this.studentID = studentID; this.grade = grade; GPA = gPA; } public void show() { System.out.println ("----------------"); System.out.println ("학생 이름 : " + getName()); System.out.println ("학생 나이 : " + getAge()); System.out.println ("학생 키 : " + getHeight()); System.out.println ("학생 몸무게 : " + getWeight()); System.out.println ("학번 : " + getStudentID()); System.out.println ("학년 : " + getGrade()); System.out.println ("학점 : " + getGPA()); } } |
Teacher.java
public class Teacher extends Person{ private String teacherID; private int monthSalary; private int workedYear; public String getTeacherID() { return teacherID; } public void setTeacherID(String teacherID) { this.teacherID = teacherID; } public int getMonthSalary() { return monthSalary; } public void setMonthSalary (int monthSalary){ this.monthSalary = monthSalary; } public int getWorkedYear() { return workedYear; } public void setWorkedYearA(int workedYear) { this.workedYear = workedYear; } public Teacher (String name, int age, int height, int weight, String teacherId, int monthSalary, int workedYear){ super(name, age, height, weight); this.teacherID = teacherID; this.monthSalary = monthSalary; this.workedYear = workedYear; } public void show(){ System.out.println ("----------------"); System.out.println ("교사 이름 : " + getName()); System.out.println ("교사 나이 : " + getAge()); System.out.println ("교사 키 : " + getHeight()); System.out.println ("교사 몸무게 : " + getWeight()); System.out.println ("교직원 번호 : " + getTeacherID()); System.out.println ("교사 월급 : " + getMonthSalary()); System.out.println ("교사 연차 : " + getWorkedYear()); } } |
Main.java
public class Main { public static void main (String[] agrs) { Student student1 = new Student("홍길동" , 28, 185, 70, "3103424", 1, 4.5); Student student2 = new Student("이순신" , 30, 175, 80, "3103564", 4, 3.0); // 개별적인 학생들을 인스턴스로 만들어 관리할 수 있다. student1.show(); student2.show(); // 개별적인 학생들은 show()라는 함수를 이용해서 정보를 출력 Teacher teacher1 = new Teacher("John Doe" , 25, 180, 120, "ABC201", 300000, 5); teacher1.show(); // 추가 학습 학번 다 다르게 출력하기 Student[] students = new Student[100]; // 학생 100명 정도 들어갈 수 있는 배열 공간 만들기 for (int i = 0; i < 100, i++){ students[i] = new Studnet ("홍길동", 20, 175, 70, i + "", 1, 4.5); // i + ""로 문자열로 바꿔주기 // 이름 같다고 가정 student[i].show(); } } } } |
사용자로부터 정보를 입력 받아 그걸 출력해보기
import java.util.Scanner; public class Main { public static void main (String[] agrs) { Scanner scan = new Scanner(System.in); System.out.print("총 몇 명의 학생이 존재합니까 ? "); int number = scan.nextInt(); Student[] students = new Student[number]; // 사용자가 입력한 학생의 명수 만큼 배열을 만들기 for (int i = 0; i < number; i++) { String name; int age; int height; int weight; String studentID; int grade; double gPA; System.out.print("학생의 이름을 입력하세요 : "); name = scan.next(); // name은 String형태이기 때문에 next()로 받기 // 하나의 띄어쓰기가 포함되지 않은 문자열을 받을 수 있따 System.out.print("학생의 나이을 입력하세요 : "); age = scan.nextInt(); System.out.print("학생의 키을 입력하세요 : "); height = scan.nextInt(); System.out.print("학생의 몸무게을 입력하세요 : "); weight = scan.nextInt(); System.out.print("학생의 학번을 입력하세요 : "); studentID = scan.next(); System.out.print("학생의 학년을 입력하세요 : "); grade = scan.nextInt(); System.out.print("학생의 학점을 입력하세요 : "); gPA = scan.nextDouble(); // 모든 정보 차례대로 입력받기 students[i] = new Student(name, age, height, weight, studentID, grade, gPA); // 처음 입력한 학생들의 숫자만큼 배열에 담긴 각각의 원소들을 초기화 } for (int i = 0; i < number; i++){ students[i].show(); } } } |
'JAVA' 카테고리의 다른 글
자바 기초 8 (인터페이스) (0) | 2021.10.14 |
---|---|
자바 기초 7 (추상, Final 키워드) (0) | 2021.10.14 |
자바 기초 5 (클래스) (0) | 2021.10.13 |
자바 기초 4 (배열) (0) | 2021.10.13 |
자바 기초 3 (반복 함수와 재귀 함수) (0) | 2021.10.13 |