220927 java

늘숲·2022년 9월 27일
0
post-custom-banner

다형성이란 무엇일까
객체간 캐스팅(상변환)이 일어난다.
함수오버라이딩이 된다.
함수 오버라이딩이 된다는 것이 폴리몰피즘이 적용된다는 것이다.
기존의 소스코드를 수정하지 않고도 새로 추가되는 클래스에 대해서만 신경쓰면 깔끔한 코드작성이 가능하다.
오버라이딩이 되고 나면 자식의 것을 실행한다.
인스턴스에서 super를 통해서 부모의 메소드를 호출이 가능하다.
instanceof는 변수명을 가지고 찾아가서 해당 객체의 타입을 확인하는 명령어다.
개발자들은 주로 다운캐스팅할 때 되는지 안되는지 가능성의 타진을 위해서 앞에 if(부모변수명 instanceof 자식클래스명) { 자식클래스타입 만들변수명 = ( 자식클래스타입) 부모변수명 } 이렇게 쓰인다.

추상클래스란? 미완성 클래스다.
추상클래스는 자손이 구현해서 실행해라라는 의미.
추상클래스의 용도는 의도적으로 오버라이딩하지 않을 시 컴파일 에러가 나는 코드를 부모에 넣음으로써 자손에서 상속시 오버라이딩을 해서 써야만 컴파일 에러가 안나게 할 수 있음

인터페이스는 추상클래스랑 유사하다.
인터페이스는 코드상 위치가 클래스 선언의 자리에 온다.
인터페이스는 메소드의 바디가 없다. 즉 추상메소드를 가진다.
추상메소드를 가지므로 자식이 구현해야함.
대신 키워드는 implement를 사용한다.
인터페이스는 객체생성이 불가능하다. 단독으로 객체가 불가능.
그래서 참조변수 선언만 가능하다.

즉 인터페이스도 다형성을 적용하려고 하는 것이다.

가장 대표적인 인터페이스의 예는 프린터기의 인터페이스이다.
OS회사에서는 인쇄를 하려고 프린터기를 연결하면 어떤 형식을 따라야할지 인터페이스를 작성해서 제공한다.
그러면 삼성과 엘지와 같은 프린터 회사들은 해당 인터페이스를 활용하여 특정 메소드함수를 호출하면 프린터 하드웨어가 작동하도록 클래스를 구성해야한다.
그럴때 인터페이스가 사용된다.

자바는 다중상속이 안된다.
이유는 애매모호한 상황이 발생할 수 있기 때문이다.
c++에서는 가능하다.
인터페이스를 구현하면 자바에서도 다중상속을 지원까지는 아니어도 흉내는 낼 수 있다.

인터페이스 안에는 상수가 와야 한다...
인터페이스에 default 붙은 메소드
변수의 종류에는 크게 세가지가 있다.
인스턴스변수 클래스안에 선언하는 변수 클래스 내부에 함수바깥에 있는 변수
스태틱변수 스태틱 붙은 거
지역변수 함수안에 있는 변수
null은 참조형 변수에 넣어줄 수 있으며 참조형 변수가 가르키는 값이 없다는 뜻이다.
JVM의 Gabage Collector가 사용하지 않는 메모리를 회수할 때 값이 null이면 회수조건이다.

인터페이스는 자식이 부여하라.
인터페이스 안에 일반함수를 구현하려면 default라는 걸 붙여서 바디가 있는 일반함수 메소드를 만들 수 있다.
(자바 1.8부터 가능)

선택정렬 알고리즘
선택정렬은 자리잡고 돌면서 최소값을 찾아서 자리바꾼다.
계속 반복해나간다.

profile
발전, 그리고 숲
post-custom-banner

0개의 댓글