Programming Language 147

상속을 이용하여 학생과 직원을 관리하는 프로그램을 구현하기

① 부모 클래스 Person 먼저 생성하기 - 부모 클래스 필드값 생성 - 부모 클래스 기본 생성자 생성 후 매개변수 생성자로 필드값 초기화 - 매개변수에 대해 getter/setter 메소드 생성 - 문자열로 필드값을 전부 모아 출력값 반환 public class Person { // 필드 protected String name; // 이름 private int age; // 나이 private double height; // 신장 private double weight; // 체중 // 생성자 public Person() {} // 기본 생성자 public Person(int age, double height, double weight) { // 매개변수 생성자 this.age = age; this...

상속을 이용하기 전후를 비교해보기

[상속 받기 전] // 클래스 Banana // 필드 public class Banana { private String nation; private int price; private String retailer; private boolean yellow; // 생성자 public Banana() { // 기본 생성자 } public Banana(String nation, int price, String retailer, boolean yellow) { this.nation = nation; this.price = price; this.retailer = retailer; // 자신의 클래스 내에 있으므로 참조변수 this. 를 사용 this.yellow = yellow; } // 메소드 // getter..

다형성(Polymorphism) - 다형성, 형변환, instanceof, 객체배열, 매개변수, 바인딩

1. 다형성(Polymorphism) : 상속을 이용한 기술로, 부모 클래스로부터 상속 받은 자식 클래스 타입의 객체를 부모 클래스 타입으로 형변환하여 한번에 다룰 수 있는 기술이다. (1) 예시 ① 부모 타입의 참조(레퍼런스)변수로 부모 객체를 다루는 경우 Parent p = new Parent(); p.printP(); p.printParent(); // 부모 객체(Parent())에만 접근 가능하다. ② 자식 타입의 참조(레퍼런스)변수로 자식 객체를 다루는 경우 Child1 c1 = new Child(); c1.printP(); c1.printParent(); c1.printChild1(); // 자식 객체(Child())와 부모 객체(Parent())에 접근 가능하다. ③ 부모 타입의 참조(레퍼런..

상속(Inherit) - 상속, 오버라이딩(Overriding), 예약어

1. 상속(Inherit) : 매 클래스마다 중복된 필드와 메소드를 하나의 클래스(부모 클래스)로 모아서 정의한 후 상속을 받아 자식 클래스가 자신의 필드와 메소드처럼 사용하는 개념 (1) 목적 : 클래스를 재사용하기 위해, 연관된 클래스들에 대해 공통적인 규약을 정의하기 위해 (2) 특징 ① 클래스 간에 다중 상속은 불가하고, 단일 상속만 가능하다. ⓐ 단일 상속: Java에서는 하나의 부모클래스에게만 상속받을 수 있다.(여러 부모클래스에게 상속받을 수 없다.) ② 모든 클래스는 Object 클래스의 후손이다. ⓐ 모든 클래스에는 이미 만들어진 클래스와 새로 만들 클래스들이 모두 포함되어 있다. ⓑ Object 클래스에 있는 메소드들을 사용할 수 있다. ⓒ Object 클래스에서 상속 받은 메소드를 오..

객체로 도서명과 출판사, 저자명, 가격, 할인율 출력하기

// 도서명과 출판사, 저자명, 가격, 할인율 출력하기 // this와 this(), setter/getter 메소드를 사용 // 도서명과 출판사, 저자명은 기본적으로 입력한다. public class Book { private String title; // 도서명 private String publisher; // 출판사 private String author; // 저자명 private int price; // 가격 private double discountRate; // 할인율 // 기본 생성자 public Book() {} // 매개변수 생성자 public Book(String title, String publisher, String author) { this(title, publisher, au..

객체(Object)(2) - 필드, 생성자, 메소드

1. 필드(Field) (1) 특징 ① 클래스를 구성하는 요소 중 하나 ② 클래스 내부에서 메소드 밖의 영역에 정의가 되는 지역변수의 개념 ③ 어떠한 데이터를 저장하기 위한 역할(= 변수) (2) 변수의 구분 ① 전역변수 : 클래스 영역에 바로 선언하는 변수(클래스 내부이면 어디서든 사용할 수 있다.) ⓐ 멤버변수(인스턴스변수, 필드) - 생성 시점: new 연산자를 통해 해당 객체를 생성하는 순간에 heap 메모리 영역에 할당된다. - 소멸 시점: 객체가 소멸될 때 같이 소멸된다.(Garbage Collector가 지워줄 때) ⓑ 클래스변수(static 변수 - static이라는 예약어가 붙은 변수) - 생성 시점: 프로그램이 실행과 동시에 static 영역에 할당된다. ∴ 해당 객체가 생성되지 않아도..

매개변수 생성자를 이용해 학생 성적 출력하기

단, 총점과 평균은 직접 설정하지 않는다. 그리고 점수를 한 개만 설정하면 국어점수로 간주하며, 점수를 두 개 설정하면 각각 국어 점수와 영어 점수로 간주한다. public class Grade { // 필드 private String name; // 학생 이름 private int kor; // 국어 점수 private int eng; // 영어 점수 private int math; // 수학 점수 private int total; // 총점 private double avg; // 평균 // 생성자 public Grade() {} // 기본 생성자 // 매개변수로 초기화 // 합계와 평균을 직접 설정하지 말라는 것은 매개변수에 넣지 말라는 뜻이다. public Grade(String name, int..

setter, getter 메소드로 여러 종목의 운동선수들의 메달 개수 출력하기

접근제한자 private을 사용할 때에는 해당 클래스엔 특정 값이 입력되면 안된다. 왜냐하면 private을 썼다는 것은 보안이 필요한 경우이기 때문이다. 그래서 진짜 값이 들어있는 클래스는 다른 곳에 두어야 한다.(아무도 모르고 나만 아는..) 그런데 그렇게 되면 직접 접근할 방법이 없으므로 간접 접근할 방법을 찾아야 한다. 이럴 때 쓰는 것이 setter 메소드와 getter 메소드이다. public class Athlete { // 접근제한자 private // public과 달리 볼 수 있는 사람의 제한 범위가 크다. // 보안이 필요한 경우에 private을 쓴다. private String name; private String event; private int gold; private int ..

객체(Object)(1) - 객체 지향 언어, 클래스, 추상화, 캡슐화, 필드, 생성자, 메소드

1. 정의 (1) 객체(Object) : 현존하는 모든 것들(유형, 무형, 사물, 개념 등) 자신의 속성과 기능이 다른 것들과 구분되어 식별이 가능한 것들 Java에서는 new 연산자를 통해 메모리 영역에 생성된 것을 말한다. (2) 객체 지향 언어 : '객체'를 지향하는 언어, '객체 중심'으로 운영된다. (3) 객체 지향 프로그래밍 : 현존하는 모든 것들 간의 상호작용을 코드로 구현하는 과정 2. 클래스(class) (1) 정의 : 구현하고자 하는 프로그램 상의 객체를 만들기 위해 객체들의 속성(특성)에 대해 정의한 것 (2) 등장 배경 ① "변수"로만 프로그래밍을 하면? ▷ 변수는 하나의 자료형에 하나의 값만 저장할 수 있다. ▷ '홍길동'과 '마이콜'이라는 객체를 만들어 보자. 그럼 이름과 나이,..

2차원 배열로 값들의 합계와 평균 출력하기

public void DimentionArray() { int[][] arr = {{1, 2, 3, 4, 5}, {3, 4, 5, 6, 7}, {5, 5, 5, 5, 5}, {7, 7, 7, 7, 7}}; int sum = 0; int avg = 0; int count = 0; for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) { //합계 sum += arr[i][j]; count++; } } System.out.println("합계: " + sum); System.out.println("평균: " + (double) sum / count); } ▼실행결과 합계: 100 평균: 5 2차원 배열은 행과 열로 구성되어 있..