JAVA 스터디 6주차

4839 단어 42SeoulJava42Seoul
  • ex1

    인터페이스란

    인터페이스는 추상메소드와 상수를 통해 강력한 강제성을 가지게 하여 인터페이스를 implements한 클래스가 동일한 동작을 수행하도록 보장한다. 또 JAVA8 부터 디폴트 메소드를 허용하면서 추가요건에 대한 대처를 할 수 있도록 유연성을 확보

    인터페이스에서 변수

    static final이 붙어 상수화된것만 선언이 가능

    인터페이스에서 메서드

    abstract가 붙어 추상 메서드로 선언
  • ex2 자바 인터페이스(Interface), 디폴트 메서드와 static 메서드
  • ex3
    1. 같은 default method가 있으면 구현 클래스에서 재정의해주어야 한다.

    2. 구현클래스가 두개이상의 인터페이스를 구현할 경우

      형변환 하여 호출시, 캐스팅된 인터페이스 내의 메서드만 인스턴스화 되어 사용할 수 있다.

  • 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에 접속 할 수 있음 → 인터페이스만 변경되었지만 기능이 모두 바뀌기 때문에 사용 가능

좋은 웹페이지 즐겨찾기