본문 바로가기
JAVA

day06) 객체

by code_learner 2021. 12. 28.

객체지향 언어의 4가지 특징

1. 추상화 

   : 설계를 할 시 데이터나 프로세스를 의미, 수행과정이 비슷한 개념으로 묶어 정의(선언)하는 것

2. 캡슐화 <-정보은닉

   : 용법(메서드 시그니처)를 알면 정확히 이용가능하다

   : 코드를 재사용할 수 있어서 개발 시간이 단축되고,

    기존의 코드들을 연결 할시 오류가 발생한다면, 연결부분을 확인하면 되기 때문에 검사시간이 단축된다.

3. 상속

   :부모의 것을 자식이 별도 선언, 구현없이 사용가능하다

4. 다형성

   : "객체지향코딩"

   : 함수에게 주어가 생긴다 ex) sc.nextInt();

   : 동일 함수(메서드) 실행시에도 각각 다른 결과를 볼 수 있다.

 


 

객체의 특성

class Student1{
	String name;//Student 클래스의 멤버변수, 필드, 속성
	int score;
	void hello() {//Student 클래스의 메서드, 멤버함수
		System.out.println("나"+name+"인데, "+score+"점이야....");
	}
}



public class Test01 {

	public static void main(String[] args) {
		
		Student1 stu1= new Student1();
		stu1.name = "홍길동";
		stu1.score=90;
		stu1.hello();
		
		Student1 stu2 = new Student1();
		stu2.name="";
		stu2.score=70;
		stu2.hello();
		
        //클래스 -> 객체
		//붕어빵틀 -> 붕어빵
        //붕어빵틀(클래스) 한개를 통해 여러 붕어빵(객체)를 만들 수 있다.
		//Student 클래스 -> stu1객체 
		//객체를 만드는 행위-> 객체화, 인스턴스화	
	}

}

 


 

생성자

-객체 생성 시 호출되어, 변수들을 초기화 하는 메서드, 클래스와 이름이 동일하다.

 

[특징]

  1. 클래스와 이름이 같음
  2. 리턴 타입, 반환값이 없음(수행값으로 객체가 나오는 것이 명확하므로 생략)

 

1)기본생성자==디폴트생성자

 - 별도로 정의하지 않아도 하나가 존재하는 생성자

 - 기본생성자를 정의하는 것도 가능함.

 

2)매개변수 생성자

 - 인자를 받을 수 있는 생성자.

 - 매개변수 생성자 생성시 기본 생성자는 사라지므로 필요시 오버로딩을 사용해 새로 정의해야한다.

 


 

객체에서의 this키워드

 -나의 멤버 변수에 다이렉트로 접근할수 있게 해주는 키워드

class Circle{
	int radius;
	String name;
	Circle(){//생성자 오버로딩
    	/*
        1.
        본인생성자
        -main클래스에서 Circle(1,"이름없는 원")과 같은 역할
        -2번 생성자를 호출 하는 역할로서 this를 사용한다.
        -생성자 오버로딩 할시 인자가 많은 생성자만 남김
        -this()생성자 이용시 최상단에 작성해야한다
        */
		this(1,"이름없는 원");
		
	}
	
	Circle(int radius, String name){
		//2. 
        //this. 나의 멤버변수에 다이렉트로 접근
        //인자로 들어온 변수가 멤버변수와 이름이 같기 때문에 this키워드로 구분. 
        this.radius=radius;
		this.name=name;
	}
	void show() {
		System.out.println(name+": "+radius);
	}
}
public class Test03 {
	public static void main(String[] args) {
		Circle c1 = new Circle();
		c1.show();
		Circle c2 = new Circle(10, "피자");
		c2.show();
	}
	
}

'JAVA' 카테고리의 다른 글

day08) getter, setter  (0) 2021.12.31
day07)static(클래스) 변수, 객체 배열  (0) 2021.12.30
day05)재귀함수  (0) 2021.12.27
day05) 함수(메서드)  (0) 2021.12.27
day04) 알고리즘-버블정렬을 이용한 이진탐색  (0) 2021.12.27

댓글