본문 바로가기

학원 일기/학원-JAVA

개인Java하면서 배우는것들 2주차

[오버로딩]

같은 명칭의 메소드를 매개변수만 달리해서 생성하는것이다

 

[오버라이딩]

부모클래스에게 상속받은 클래스나 인터페이스를 implements한 클래스가

상위 클래스에 구현돼있는 메소드명을 그대로 재구현하는것이며 기능은 새롭게 정의할수있다

 

[this]

해당 클래스의 객체 스스로를 지정하는 용어이다. 

 

[멤버]

말그대로 구성원이다 인스턴스의 멤버가 될수도있고 클래스의 멤버가 될수도 있다

변수와,메소드 

 

[접근제한자]

클래스 내에서 멤버의 접근을 제한하는 역할을 한다

-public => 어떤 클래스든 접근할수 있다

-protected => 자기자신, 같은 패키지, 서로다른패키지에서도 상속을 받아 접근할수있다

-private => 본인 클래스만 접근할수 있다

-default => 같은 패키지내에서 모두접근 가능하며 접근제한자 지정이없을경우 defualt로 설정된다.

 

[추상클래스]

추상 클래스란 미완성된 메소드(=추상 메소드)를 가진 클래스를 의미한다.

-추상 클래스와 추상메소드 앞에는 abstract를 붙여줘야한다 

 

[궁금한점]

추상메소드는 왜필요한가?

 

[해결]

-추상적인 것이 객채로 생성되는것을 방지하기위함이있다 예를들어

새라는 클래스의 날다라는 메소드가있으면 새라는 클래스를  혼란을 방지하기위해 객체생성을 하지않고

참새라는 클래스가 새라는 추상클래스를 상속받아 메소드를 구현하여 사용하게 하는것이다

-또한 자식클래스는 하나의 상속만 받을수있는데 이것은 일을진행할때 구조의 통일성과 단일성을 만족하는데

아주 효과적이라고 생각한다

 

[new]

객체를 초기화 시키는 생성자 이다.

 

[super]

현재 클래스가 상속을 받은 클래스 라면 부모 클래스를 지칭하는 말이다.

 

[상속]

상속받는 클래스는 상속해주는 클래스의 기능을 모두 구현할수있다 

일반적으로 부모클래스와 자식클래스로 부르게되는데 이부분때문에 자식클래스가 부모클래스에 포함된다는 생각을

가질수있다 하지만 엄밀히말하면 자식클래스가 부모클래스를 포함하는 개념이며

자식클래스가 먼저 생겨났고 필요에 의해서 부모클래스가 뒤늦게 생성되었다고 생각해도 된다

부모클래스 스쿨부터해서 선생님,학교순으로 상속이여서 당연히 2번이라고 생각했는데 1번이 맞는개념 이였음 <<

!! 자바에서의 상속이란것에 익숙해지자  << 상속은 이쯤에서 마무리하자 필요하면 나중에 다시보기로

 

[인터페이스]

-서로 관계가 없는 객체들의 상호작용을 위해 사용된다

-메소드에는 abstract라는 단어가없지만 기능구현 없이 메소드를 생성한후 컴파일시 abstract로 

변화하기 때문에 추상메소드랑 같은 기능을 가지게된다

-메소드를 가질수 있다

-class대신 interface를 사용하며 다중상속이 가능하다

-다형성이라는 측면에 굉장히 강점이있는것같고 추상메서드의 상위 개념이라고 봐도 될것같다

 다만 완벽히 대체할수는 없다고 생각한다

-사용방법은 implements로 상속후 추상메소드를 오버라이딩해 기능을 구현하는 것이다 

 

[내부클래스]

-클래스안의 클래스이다

-생성방법 =>  new연산자를 통해 바로 생성하는것이 아니라 가장 바깥에있는 class부터 접근하여 생성해야한다

ex) A라는 클래스안에 B라는 내부클래스가 있다고하자

A a = new A();

A.C c = a.C(); 

이렇게 하는것이다   

 

[static]

-정적 변수이다

-정적 변수의 특징으로는 static메모리 영역에 저장된다

-static 메모리에 저장된 값은 프로그램이 종료될때까지 유지된다, 전역에서 접근할수 있는 값이다

 

[궁금한점]

static 영역에 int A = 1;이라는 값을 생성시키고 A라는 주소에 = 2라는값을 담게 바꿔줬을때 

static영역에 1이라는값은 참조하는 변수가없는상황일 것이다 그럼 이때 1이라는 값은 JVM에의해서 없어지는 건지 남아있는건지 궁금하다.

 

[JVM]

-Java Virtual Machine

-구글에 쳤을때 자바바이트 코드를 실행하는 주체이다 틀린말은 아니지만 JVM은 프로그램의 실행방식이라고도 생각하수있고 생각보다 더많은 기능을 가지고있고 이런부분을 설명하기위해서는 좀더 많은 지식이 필요하다. 물론 다른 개념도 알아볼수록 더 복잡해지는것은 마찬가지이긴하다..

 

 

[지역 중첩 클래스 or 지역 클래스]

-메소드 안의 선언되는 클래스이다

ex)

Test t1 = new Test(){

  클래스 내용

-단 한번 사용될 클래스인경우 사용한다

-클래스 이름이 없기때문에 외부에서 익명객체의 메소드에 접근하는것은 불가능하다 같은이유로 익명객체안 내부클래스여도 마찬가지일것같다 다만 이렇게 쓸일은 없을것같다

 

[오류]

프로그래밍 외부으 문제로 프로그래머가 해결할수 없다

 

[예외]

프로그래밍 내부 문제로 프로그래머가 해결할수 있다

 

[try catch finally]

-프로그래머가 예외가 발생될 가능성이있는 코드에대해 미리 대처할수 있는 방법이다.

ex)

try{

    예외 발생이 될수있는 실행구문

}catch (처리할 예외의 종류 변수명 => Exception e [이렇게하면 모든 예외를 다잡는다는 말이다]){

    catch()안의 예외가 발생했을경우 실행될 코드

}finally{

    무조건 실행될 코드 (finally는 적지 않아도 된다

}

 

[throws]

-해당 예외를 코드가실행되는 객체가아닌 객체를 호출한쪽에서 처리하라고 요청하는것

-호출한쪽에서 try catch 구문을 통해 오류를 처리하여야한다

 

[궁금한점]

왜 직접 해결안하고 throws로 호출쪽에 예외처리를 넘기는가

 

[해결]

그 이유중 하나로 직접 처리하는 경우에는 예외가 발생하여도 불필요한 프로그램 실행이 계속 진행될수 있지만 

throws를 이용할경우 예외가  생긴 시점에서 바로 실행을 중단시킬수 있어서 인것같다

 

 

ex(); 안했는데 실행이 왜되는거지???? 지금은 귀찮아서 다음에 실행고고고고

'학원 일기 > 학원-JAVA' 카테고리의 다른 글

자바7일차  (0) 2021.02.23
자바 6일차  (0) 2021.02.22
학원 Java 5일차 수정사항없음  (0) 2021.02.19
학원 Java 4일차  (0) 2021.02.18
학원 java 이외의 부가적인공부  (0) 2021.02.17