JAVA/STUDY

7. 클래스 / 상속

dev_sr 2020. 9. 10. 18:22

객체지향 프로그래밍의 보안성 때문에 멤버변수는 private 으로 두고

public 메서드로 접근할 수 있도록 함

 

이클립스에서 클래스 멤버 변수를 선언하고

class 안에서 마우스 우클릭

source

->Generate Constructer using Field : 생성자 자동 생성

->Generate Getters and Setters Methods for the type's field : get, set 메서드 자동 생성

 

 

public class Main {

	public static void main(String[] args) {

		Node one = new Node(10,20);
		Node two = new Node(30,40);
		
		Node result = one.GetCenter(two);
		System.out.println("두 점 사이의 정중앙: "+result.GetX()+","+result.GetY());
		
		one.SetX(60);	//60,20
		two.SetY(60);	//30,60
		Node result2 = one.GetCenter(two);
		System.out.println("두 점 사이의 정중앙: "+result2.GetX()+","+result2.GetY());
	}

}
public class Node {

	private int x,y;
	
	//생성자
	public Node(int x, int y)
	{
		this.x=x;
		this.y=y;
	}
	
	public int GetX()
	{
		return x;
	}
	
	public void SetX(int x)
	{
		this.x=x;
	}
	
	public int GetY()
	{
		return y;
	}
	
	public void SetY(int y)
	{
		this.y=y;
	}
	
	public Node GetCenter(Node other)
	{
		return new Node((this.x+other.GetX())/2, (this.y+other.GetY())/2);
	}
}

 

 

상속을 받을 때는 extends 키워드 사용

 

Person ----------------- 상속 --------> Student

(이름, 나이, 키, 몸무게)           (학번, 학년, 학점) 

 

자식 클래스에서 위의 getter setter 랑 생성자 자동생성을 눌러주면

상속받은 클래스의 멤버변수를 자신의 생성자를 통해서 초기화 한다.

super(부모 클래스 멤버변수); -> 부모 클래스의 생성자 실행

 

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student student1 = new Student("홍길동",20,175,70,"20200101",1,3.5);
		Student student2 = new Student("임꺽정",25,170,65,29423122+"",3,2.5);	//숫자+"" => 문자열로 바꾸기
		
		student1.Show();
		student2.Show();
		
	}

}
public class Person {

	private String name;
	private int age;
	private int height;
	private int weight;
	
	public Person(String name, int age, int height, int weight) {
		super();
		this.name = name;
		this.age = age;
		this.height = height;
		this.weight = 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 class Student extends Person{

	private String studentId;
	private int grade;
	private double 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;
		this.gpa = 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) {
		this.gpa = gpa;
	}
	
	public void Show() {
		System.out.println("-------------------------------");
		System.out.println("이름: "+this.getName());
		System.out.println("나이: "+this.getAge());
		System.out.println("키: "+this.getHeight());
		System.out.println("몸무게: "+this.getWeight());
		System.out.println("학번: "+this.getStudentId());
		System.out.println("학년: "+this.getGrade());
		System.out.println("학점: "+this.getGpa());
	}
	
}

 

'JAVA > STUDY' 카테고리의 다른 글

9. 인터페이스  (0) 2020.09.11
8. 추상 / Final  (0) 2020.09.10
6. 반복문과 재귀함수 (팩토리얼, 피보나치)  (0) 2020.09.09
5. 입력 / 파일 입력  (0) 2020.09.09
4. 조건문 & 반복문  (0) 2020.09.08