728x90
λ°˜μ‘ν˜•

1. 객체지ν–₯ ?

- κ°œλ… : μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν˜„μ‹€ μ„Έκ³„μ˜ 객체λ₯Ό ν•„λ“œμ™€ λ©”μ„œλ“œλ‘œ λͺ¨λΈλ§ν•œ 것

μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν•„λ“œ(Field)둜 μ •μ˜ν•˜κ³ , λ™μž‘μ€ λ©”μ„œλ“œ(Method)둜 μ •μ˜

ν•„λ“œλŠ” 객체 내뢄에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜κ³ , λ©”μ„œλ“œλŠ” 객체 내뢀에 μ •μ˜λœ λ™μž‘

 

- ν”„λ‘œκ·Έλž˜λ° : μ†Œν”„νŠΈμ›¨μ–΄μ˜ 규λͺ¨κ°€ μ»€μ§€λ©΄μ„œ λ™μž‘κ³Ό λΆ„λ¦¬λ˜μ–΄ μ „ κ³Όμ •μ—μ„œ μ„œλ‘œ λ³΅μž‘ν•˜κ²Œ μ–½ν˜€ μžˆλŠ” 데이터λ₯Ό μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— 절파 지ν–₯ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ ν•œκ³„λ‘œ 생성

절차 지ν–₯ ν”„λ‘œκ·Έλž¨μ€ μΆ”ν›„ λ³€κ²½ν•˜κ±°λ‚˜ ν™•μž₯ν•˜κΈ°λ„ 어렀움

ν˜„μ‹€μ„Έκ³„λ₯Ό 객체 λ‹¨μœ„λ‘œ ν”„λ‘œκ·Έλž˜λ°ν•˜λ©°, κ°μ²΄λŠ” ν•„λ“œμ™€ λ©”μ„œλ“œλ₯΄ ν•˜λ‚˜λ‘œ λ¬Άμ–΄ ν‘œν˜„

 

- νŠΉμ§•(μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ λ¬Έμ œλ‘œλ„ 자주 좜제됨!!)

1. μΊ‘μŠν™”(정보은닉) : κ΄€λ ¨λœ ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 캑슐처럼 포μž₯ν•΄ μ„ΈλΆ€ λ‚΄μš©μ„ μ™ΈλΆ€μ—μ„œ μ•Œ 수 없도둝 κ°μΆ”λŠ” 것

2. 상속 : μžλ…€κ°€ λΆ€λͺ¨ μž¬μ‚°μ„ 상속받아 μ‚¬μš©ν•˜λ“―μ΄ μƒμœ„ 객체λ₯Ό 상속받은 ν•˜μœ„ 객체가 μƒμœ„ 객체의 λ©”μ„œλ“œμ™€ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것

3. λ‹€ν˜•μ„± : λŒ€μž…λ˜λŠ” 객체에 λ”°λΌμ„œ λ©”μ„œλ“œλ₯Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λŠ” 기술, μ‹€ν–‰ 도쀑 λ™μΌν•œ μ΄λ¦„μ˜ λ‹€μ–‘ν•œ κ΅¬ν˜„μ²΄ μ€‘μ—μ„œ λ©”μ„œλ“œλ₯Ό 선택 κ°€λŠ₯(λ‹€μ–‘μ„±κ³ΌλŠ” 닀름)

4. 좔상화 : ν˜„μ‹€ μ„Έκ³„μ˜ κ°μ²΄μ—μ„œ λΆˆν•„μš”ν•œ 속성을 μ œκ±°ν•˜κ³  μ€‘μš”ν•œ μ •λ³΄λ§Œ 클래슀둜 ν‘œν˜„ν•˜λŠ” μΌμ’…μ˜ λͺ¨λΈλ§ 기법

 

더보기

- 클래슀 μ„ μ–Έ

class 클래슀 이름 {       => 클래슀λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ

  // ν•„λ“œ                         => 객체의 속성을 λ‚˜νƒ€λ‚Έλ‹€

  // λ©”μ„œλ“œ                     => 객체의 λ™μž‘μ„ λ‚˜νƒ€λ‚Έλ‹€

 

ex)

public class Ball {

   double radius = 2.0;

   double getVolume() {

      return 4 / 3 * 3.14 * radius * radius * radius;

    }

}

 

public : 클래슀 μ ‘κ·Ό κΆŒν•œμœΌλ‘œ λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•  수 μžˆλ‹€

class : 클래슀 ν‚€μ›Œλ“œ

Ball : 클래슀 μ΄λ¦„μœΌλ‘œ μ†ŒμŠ€ 파일 이름과 동일해야 ν•œλ‹€

double radius = 2.0;  : ν•„λ“œ

return 4 / 3 * 3.14 *radius * radius * radius;  =>  λ©”μ„œλ“œ : () κ°€ λ“€μ–΄κ°€λ©΄ λ©”μ„œλ“œλΌκ³  μƒκ°ν•˜κΈ°

- 객체 생성과 μ°Έμ‘° λ³€μˆ˜

- ν•œ λ¬Έμž₯으둜 λ³€μˆ˜ μ„ μ–Έκ³Ό 객체 생성

 ν΄λž˜μŠ€ 이름 λ³€μˆ˜ = new 클래슀 이름();

  • μƒμ„±μž 이름은 클래슀 이름과 κ°™λ‹€
  • μƒμ„±μžμ˜ λ°˜ν™˜ νƒ€μž…μ€ μ—†λ‹€
  • μƒμ„±μžλŠ” new μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©°, 객체λ₯Ό 생성할 λ•Œ ν˜ΈμΆœν•œλ‹€
  • μƒμ„±μžλŠ” μ˜€λ²„λ‘œλ”© ν•  수 μžˆλ‹€.(μ˜€λ²„λ‘œλ”©(Overloading) : 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œ μ—¬λŸ¬κ°œλ₯Ό κ°€μ§€λ©΄μ„œ λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜•κ³Ό κ°œμˆ˜κ°€ λ‹€λ₯΄λ„둝 ν•˜λŠ” 기술)

 

- 클래슀 μ„ μ–Έκ³Ό 객체 생성 μ˜ˆμ‹œ 문제 (기초 νƒ€μž…κ³Ό μ°Έμ‘°νƒ€μž…)

package java0316;

public class PhoneDemo {

    public static void main(String[] args) {

       Phone myPhone = new Phone();

       myPhone.model = "κ°€λŸ­μ‹œ S8";

       myPhone.value = 100;

       myPhone.print();

       Phone yourPhone = new Phone();

       yourPhone.model = "G6";

        yourPhone.value = 85;

        yourPhone.print();

     }

}

class Phone {

     String model;

     int value;

     void print() {

            System.out.println(value + "λ§Œμ› 짜리" + model + "슀마트폰");

     }

}

κ²°κ³ΌλŠ” μ΄λ ‡μŠ΅λ‹ˆλ‹€!!

100λ§Œμ› μ§œλ¦¬κ°€λŸ­μ‹œ S8슀마트폰

85λ§Œμ› 짜리G6슀마트폰

- ν•„λ“œμ™€ 지역 λ³€μˆ˜μ˜ 차이 : ν•„λ“œλŠ” κΈ°λ³Έ 값이 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” κΈ°λ³Έ 값이 μ—†μ–΄ λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”(기본값이 0)

ν•„λ“œλŠ” 클래슀 μ „μ²΄μ—μ„œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” μ„ μ–Έλœ 블둝 λ‚΄λΆ€μ˜ μ„ μ–Έλœ ν›„μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯

ν•„λ“œμ™€ 달리 지역 λ³€μˆ˜λŠ” final둜만 지정 κ°€λŠ₯ (λ°°μ—΄μ—μ„œλ§Œ null값을 가짐)

 

- μ ‘κ·Όμžμ™€ μ„€μ •μž

ν•„μš”μ„± : 클래슀 내뢀에 μΊ‘μŠν™”λœ 멀버λ₯Ό μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•  ν•„μš”

μ ‘κ·Όμžμ™€ μ„€μ •μž

private으둜 μ§€μ •λœ ν•„λ“œμ— 값을 λ°˜ν™˜ν•˜λŠ” μ ‘κ·Όμžμ™€ 값을 λ³€κ²½ν•˜λŠ” μ„€μ •μžλŠ” 곡개된 λ©”μ„œλ“œ

일반적으둜 μ ‘κ·ΌμžλŠ” get, μ„€μ •μžλŠ” set으둜 μ‹œμž‘ν•˜λŠ” 이름을 μ‚¬μš©

ν•„λ“œ 이름을 외뢀와 μ°¨λ‹¨ν•΄μ„œ λ…λ¦½μ‹œν‚€κΈ° λ•Œλ¬Έμ— ν•„λ“œ 이름 λ³€κ²½μ΄λ‚˜ 데이터 검증도 κ°€λŠ₯

package java0316;

public class CircleDemo2 {

        public static void main(String[] args) {

                Circle1 myCircle = new Circle1();

                myCircle.setRadius(10.0);

                myCircle.show(myCircle.getRadius(), myCircle.findArea());

         }

}

class Circle1 {

        private double radius;

        public double getRadius() {

               return radius;

        }

        public void setRadius(double r) {

               this.radius = r;

         }

         double findArea() {

              return 3.14 * radius * radius;

         }

         void show(double x, double y) {

               System.out.printf("λ°˜μ§€λ¦„ = %.1f, 넓이 = %.1f\n", x, y);

         }

}

κ²°κ³ΌλŠ” ) λ°˜μ§€λ¦„ = 10.0, 넓이 = 314.0

- λ””ν΄νŠΈ μƒμ„±μž

  • λͺ¨λ“  ν΄λž˜μŠ€λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ μƒμ„±μžκ°€ 있음
  • λ§Œμ•½ μƒμ„±μžλ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μΆ”κ°€

 

728x90
λ°˜μ‘ν˜•

+ Recent posts