2020년 9월 20일 일요일

[추천자바강의/추천자바동영상]JAVA다형성이란? Polymorphism개요,메소드재정의,메소드오버로딩,동적바인딩(Dynamic Binding)(자바/JAVA/자바교육/자바강의/자바동영상/자바강좌/추천JAVA강좌/JAVA동영상추천)

 [추천자바강의/추천자바동영상]JAVA다형성이란? Polymorphism개요,메소드재정의,메소드오버로딩,동적바인딩(Dynamic Binding)(자바/JAVA/자바교육/자바강의/자바동영상/자바강좌/추천JAVA강좌/JAVA동영상추천)


ojc.asia/bbs/board.php?bo_table=LecJava&wr_id=756

[추천자바강의/추천자바동영상]JAVA다형성이란? Polymorphism개요,메소드재정의,메소드오버로딩,동��

[추천자바강의/추천자바동영상]JAVA다형성이란? Polymorphism개요,메소드재정의,메소드오버로딩,동적바인딩(Dynamic Binding)(자바/JAVA/자바교육/자바강의/자바동영상/자바강좌/추천JAVA강좌/JAVA동영상)1.

ojc.asia



https://youtu.be/R96LUVjf4t4


[추천자바강의/추천자바동영상]JAVA다형성이란? Polymorphism개요,메소드재정의,메소드오버로딩,동적바인딩(Dynamic Binding)(자바/JAVA/자바교육/자바강의/자바동영상/자바강좌/추천JAVA강좌/JAVA동영상추천)


1. 다형성(polymorphism)



 


객체가 다양한 형태를 취할 수 있는 능력이다.

둘 이상의 IS-A 테스트를 통과 할 수 있는 모든 Java 객체는 다형성으로 간주된다

public interface DriveCar {  ..}

public class Emp { public void work() { … }  }

public class Programmer extends Emp implements DriveCar { public void work() { … } }


Programmer is-a Emp

Programmer is-a DriveCar

Programmer is-a Programmer

Programmer is-a Object


new Programmer() 객체가 타입으로 가능한 것은 위의 is-a 가 허용되는 객체들이다.

Programmer p = new Programmer();


Emp e = p;

DriveCar dc = p;

Object d = p;


e.work() ???


Programmer의 객체 속에는 모든 부모들이 들어 있다. 



다형성은 프로그램에서 특별한 연산자나 키워드가 있는 것이 아니며 객체지향 프로그래밍 언어에서 "오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다. 

오버라이딩(Overriding) : 상위 클래스에 정의된 함수와 동일한 형태의 함수를 하위 클래스에 정의

abstract class Emp { public void work(); }

class Programmer extends Emp {

public void work() {… }

}

오버로딩(Overloading) : 메소드의 매개변수의 유형과 개수가 다르게 하면서 동일한 메소드를 정의하는것

class Programmer {

public void work() {  … }

public void work(String s) {  … }

public void work(int i) {  … }

public int work() {  … }  //오버로딩 아님. 동일한 메소드 정의되었다고 컴파일 오류발생.

}




2. 메소드오버라이딩(메소드 재정의)

상위 클래스의 인스턴스 메소드를 새로 구현함으로써 외부에 다른 반응양식을 보일 수 있다

메쏘드 재정의를 하기위해서

메쏘드 이름이 같아야 하고,

매개변수의 갯수와 그 자료형이 일치하고,

반환치의 자료형이 일치해야 한다.

객체의 타입과 관계없이 참조값(reference)이 가리키는 실제 객체 자료형의 메소드가 선택된다.

실제 자료형에 메쏘드가 없으면 가장 가까운 상위 클래스의 메소드가 선택됨

상위 클래스보다 접근 제어를 강화할 수 없다

상위 클래스에 public으로 되어있는 함수를 하위 클래스에서 private으로 할 수 없다


3. 실습



 


package javatest;

/**

 * 사원이 되려면 일을한다는 규칙, 계약사항

 */

interface Emp {

void work();

}


class Programmer implements Emp {

@Override

public void work() {

System.out.println("프로그래머가 개발을 합니다.");

}

}


class Designer implements Emp {

@Override

public void work() {

System.out.println("디자이너가 디자인을 합니다.");

}

}


class Salesman implements Emp {

@Override

public void work() {

System.out.println("영업사원이 영업을 합니다.");

}

}


public class EmpTest {

public static void main(String[] args) {

Emp[] emps = new Emp[3];


emps[0] = new Programmer();

emps[1] = new Designer();

emps[2] = new Salesman();


for(Emp e : emps)

    e.work();

}

}


프로그래머가 개발을 합니다.

디자이너가 디자인을 합니다.

영업사원이 영업을 합니다.







#자바다향성, #다형성이란, #객체지향다형성, #메소드재정의, #메소드오버로딩, #메소드다중정의, #자바인터페이스, #추상클래스#자바추상클래스#추상메소드#자바추상메소드#자바동영상#자바강의#자바교육#자바강좌#자바#JAVA#자바동영상강의#추천자바강의#추천자바강좌#JAVA동영상#JAVA강의#JAVA강좌#JAVA교육#JAVA#추천JAVA강의#추천JAVA교육#추천JAVA강좌#자바소스#자바실습  

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...