본문 바로가기
IT 코딩

객체지향, 상속, 생성자

by 김잔버 2020. 11. 15.

객체지향

사용 예) Animal cat = new Animal();         Animal dog = new Animal();

*각 객체마다 변수는 공유하지 않는다 하지만 static 키워드를 사용한 변수는 전역변수 처리되어

공유됨

 

public class test

{

        private static String name;

       

        public void setname(String name) {   //메소드 void 경우 return 필요없다.

               this.name = name;

        }

 

        public static void main(String[] args)

        {

               test a = new test();

               test b = new test();

              

               a.setname("오잉");

               b.setname("또잉");

              

               System.out.println(a.name);

               System.out.println(b.name);

        }

}

출력값 :        오잉

                  또잉

 

또한 메소드로 값을 넘겨주기 위해서는 함수에서 값을 처리후 리턴값을 통해 처리된 값을 받는다.

 

-객체를 넘겨주는 방법

int a; //객체 변수

 

public void vartest(Test test) {       //int자료형으로 받지 않고 Test자료형으로 받고 있다.

           test.a++;

}

public void static void main(String[] args) {

           Test myTest = new Test();

           myTest.a = 1;

           myTest.vartest(myTest);

}

ð  결과 : 값이 늘어난다.

ð  더 편한 방법은 vartest의 메소드를 public void vartest() { this.a++; } 로 변경한다.

Call By Value

이전 페이지 참조

 

상속

*자바는 다중상속을 지원하지 않는다. 애매모하기 때문 ((X) test extends A, B)

자식클래스 extends 부모클래스

ex) public class Dog(자식) extends Animal(부모)

Animal dog = new Dog(); -> 가능(O)                   Dog dog = new Animal(); -> 불가능(X)

*주의 부모클래스로 만든 객체는 자식 클래스의 자료형으로 사용할 수 없다.

*JAVA에서 만드는 클래스는 모두 Object 클래스를 자동으로 상속받도록 되어있다.

-> Object animal = new Animal(); -> 가능(O)

 

메소드 오버라이딩(덮어쓰기)

자식 클래스가 부모클래스의 동일한 형태(입출력이 동일)의 메소드를 구현하는 행위

 

메소드 오버로딩

입력항목(인자)이 다른경우에만 오버로딩이 가능하다.

 

생성자

new키워드를 통해 객체가 만들어질 때마다 실행

*생성자가 없다면 default 생성자를 자동으로 컴파일, 하지만 사용자가 작성한 생성자가 하나라도 있을시에 컴파일러는 default생성자를 추가하지 않는다.

생성자의 규칙은 다음과 같다.

1.     클래스명과 메소드 명이 같아야 한다.

2.     리턴 타입을 정의하지 않는다.

ex) public 클래스명() {

           초기화 내용;

}

-생성자 오버로딩

입력항목이 다른 생성자를 만들 수 있다.

public dog(String name) {                      è        Dog dog = new dog(“happy”);

          

}

public dog(int name) {                          è        Dog dogint = new dog(1);

           ……

}

인터페이스

public interface Predator {

           public String getFood();

}

public Tiger extends Animal implements Predator {  //Lion도 동일하게 구현

           public String getFood() {

                     return “apple”;

}

}

è

public class ZooKeeper {

           public void feed(Predator predator) {

                     System.out.println(“feed ”+predator.getFood());

}

}

ex)

 

물리적 세계

자바 세계

클래스A

컴퓨터

ZooKeeper

Interface

USB 포트

Predator

클래스B implements Predator

하드디스크, 디지털카메라, …

Tiger, Lion, Crocodile, …

*다형성

'IT 코딩' 카테고리의 다른 글

자료형  (0) 2020.11.19
암호 분석의 종류  (0) 2020.11.18
시스템 프로그래밍 정리  (0) 2020.11.17
리눅스 정리  (0) 2020.11.16
코딩 함수 fork, exec 계열, 상속되지 않는 파일기술자, system, posix_spawn  (0) 2020.11.14

댓글