JAVA 스터디 6주차
- ex1
인터페이스란
인터페이스는 추상메소드와 상수를 통해 강력한 강제성을 가지게 하여 인터페이스를 implements한 클래스가 동일한 동작을 수행하도록 보장한다. 또 JAVA8 부터 디폴트 메소드를 허용하면서 추가요건에 대한 대처를 할 수 있도록 유연성을 확보인터페이스에서 변수
static final이 붙어 상수화된것만 선언이 가능인터페이스에서 메서드
abstract가 붙어 추상 메서드로 선언
- ex2 자바 인터페이스(Interface), 디폴트 메서드와 static 메서드
- ex3
-
같은 default method가 있으면 구현 클래스에서 재정의해주어야 한다.
-
구현클래스가 두개이상의 인터페이스를 구현할 경우
형변환 하여 호출시, 캐스팅된 인터페이스 내의 메서드만 인스턴스화 되어 사용할 수 있다.
-
- ex4
상속타입 : 인터페이스를 인터페이스가 상속 받음
package ex4; public class MyClassTest { public static void main(String[] args) { MyClass mClass = new MyClass(); X xClass = mClass; xClass.x(); //x 로 형변환함으로 x 만 호출 Y yClass = mClass; yClass.y(); MyInterface iClass = mClass; //인터페이스를 인스턴스화 iClass.myMethod(); //인터페이스는 다중상속(x,y)받았음으로 모두 접근 가능 iClass.x(); iClass.y(); } }
- ex5
- ex6
heap영역 : 참조변수 관련, 객체(인스턴스)
static 영역 : 전역변수, 정적변수 선언관련
stack 영역 : 기본자료형에 해당하는 지역변수 영역(메서드 관련)
실제 데이터를 갖고 있는 힙 영역의 참조값을 스택영역의 객체가 갖고 있다.
상속시 :
- heap 에 자식을 생성하면 부모도 생성
- static 에 자식 설계도 올라가면 부모 설계도 같이 올라감 ⇒ 생성된 객체의 참조 주소는 부모 주소
- static 에 올라간 메서드만 호출 가능
Parent a3 = new A() 에서 A는 자식
부모타입으로 자식의 객체를 생성하는 경우이다.
이 경우
static : (설계도) 부모타입만 올라감
stack : a3만 존재
heap : 부모, 자식 객체가 모두 올라가있음
일반적으로 부모 타입만 참조하여 호출 할 수 있으나(heap)
자식타입을 호출할려면
(A)a3로 캐스팅하여 사용
부모의 메서드가 자식의 메서드를 자동 으로 호출하는데 이것을 vmi라고 한다.
(자식이 부모 메서드를 오버라이딩 했을 시)
[JAVA/자바] 메모리 구조(static, stack, heap)
추상클래스 : 클래스간 계층 관계를 정립하기 위함
인터페이스 : 기능적 정의를 구현하기 위해 스펙을 적어놓은 곳
ex)다크모드를 클릭하면 전체 ui가 바뀌는 것처럼 → 하나를 바꾸게 되면 전체 기능에 적용 되어 바뀜
ex) oracle, mysql, postrgesql 의 dao 가 명세된 인터페이스가 있다. 인터페이스만 바꿔주면 해당 db에 접속 할 수 있음 → 인터페이스만 변경되었지만 기능이 모두 바뀌기 때문에 사용 가능
Author And Source
이 문제에 관하여(JAVA 스터디 6주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kurikuri/JAVA-스터디-6주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)