java 100예제 #3

·2022년 1월 15일
0

JAVA

목록 보기
3/14

OOP : 객체 지향 프로그래밍

클래스

클래스는 객체를 생성하기 위한 설계도라고 할 수 있다.
객체는 클래스의 인스턴스이다.

키워드 new는 메모리 공간에 객체를 생성하고 주소값을 반환해줌.

클래스의 구성
필드 : (또는 속성) 객체의 데이터 저장

생성자 : 객체의 초기화 담당
객체가 생성될 때 제일 먼저 자동 호출되는 메소드.
생성자는 클래스명과 동일하며 호출만 가능한 메소드이다.
오버로딩이 가능하다는 특징이 있다.
default 생성자 : 클래스 내에 생성자가 없으면 default 생성자가 자동으로 호출된다. (인자값 없고 클래스명과 동일한..)

메소드 : 객체의 동작 부분, 실행코드

EX)

class Machine{
	//필드
	int price;
    String color;
    
    //생성자
    Machine(){}
    
    //메소드
    void move(){
    		System.out.println("Machine is moving.");
	}     
}

다른 예시

< ! >
여러 클래스 중 public클래스가 파일명이 된다.

생성자

  1. 인자값이 없는 생성자
    Machine(){}
  2. 받는 인자값이 있는 생성자
    Machine(int price, String color){
    this.price = price;
    this.color = color;
    //this는 생성된 객체를 의미함.
    }

이렇게 여러 생성자를 모두 사용하는 것을 오버로딩 이라고 한다.

2번 생성자를 이용한 메소드 사용 예시

Machine M1 = new Machine(1000, "red");
M1.move(); 

상속

부모(슈퍼, 기초, 기반)클래스로부터 속성, 메소드를 물려받아 새로운 클래스인 자식(서브, 하위, 파생)클래스를 만들어 내는 것을 상속(Inheritance) 이라고 한다.

상속의 특징
: 재활용성
: 생성자는 상속이 불가능하다
: 확장한다는 개념으로 extends 키워드를 사용한다.
: 접근 제한자 private인 부모 클래스를 상속받으면 자식 클래스여도 접근이 불가능하다.
: 오버라이딩

class Person{

    //Field
    int gender;
    
    //Contrutor
    Person(){
    	this.gender = 1; 
    }
       
    //Method
    void walk(){
    	System.out.println("총총");
    }
}       

class Student extends Person{
	int age;
    
    Student(int age){
    	super();
        this.age = age;
    }
    
    void walk(){
    	System.out.println("삐질삐질");
    }

}

public class Hello(){
	public staic void main(String[] args){
    	Student S1 = new Student();
        S1.walk(); //메소드 오버라이딩
	}
}

위 예시 코드에서 walk 메소드처럼 부모클래스의 메소드와 같은 이름의 메소드를 다른 동작 방식으로 자식클래스에 재정의해서 사용하는 방식을 오버라이딩이라고 한다.

자식클래스에 있는 super(); 은 부모클래스의 생성자를 호출하는 명령어다. 생략이 가능하다.

0개의 댓글

관련 채용 정보