본문 바로가기

JAVA

자바용어 2


1.

자바특징:(추상화,상속성,다형성)

캡슐화와 데이터 은닉(private, 게터,세터)

다형성/메서드 오버로딩

           상속성(private와 생성자는 상속을 못받는다.)

           생성자도 여러 개 생성 가능(매개 변수를 변형시켜서)…

 

자바는 어떤식으로 돌아가는가?

           JVM이 읽을 수 있게 작성된게 classfile이다.

JVM에서는 클래스파일이 있는가 확인 후 각각의 클래스를 메모리에 전부다 저장을 해 놓는다. 그리고 순서에 의해 처리 한다.

static

온전한 단어 다 써서 메소드 이름을 만든다.(처음 보는사람도 대충 알 수 있게)

 

클래스

           속성과, 행위를 나타낸다.

           인스턴스 변수(속성), 인스턴스 메소드(행위)

객체지향 코드

           반복된 메소드를 담아 놓아서..상속 시키면 관리가 편하다.

           상위 클래스 메소드가 맘에 안들면 오버라이드 해서 쓸 수 있다.

           상위클래스, 하위 클래스

 

클래스와 객체 사이

           클래스는 정의만 해 놓은 것이고, 객체는 실제로 쓰는 것을 말한다.

           클래스는 메모리에 다 올려 놓고 필요 한 것만 가져다 쓴다.

           Dog d = new Dog(); 이건 생성자를 먼저 호출 한 것이다.

           생성자를 안만들어줬을 때 생성자는 알아서 default생성자를 만들어 주고

생성자는 클래스를 활용 하기전 변수들을 초기화 하거나 그런 준비 과정을 위해 사용 한다.

가비지 콜렉션

           자바는 메모리 수거도 알아서 해준다.

           객체는 힙 영역에 저장 된다. 연결이 끈어지면 알아서 싹 지워진다.

변수 선언

           정수형,실수형,논리형,문자형

           연관된 값을 표현할 때 연달아 쓸 수 있다.

           final은 값이 변화하지 않도록 해준다.

           Final을 클래스에 쓰면 상속이 안된다. 변수는 값이 변화하지 않는다. 각각 틀림

 

 

객체 레퍼런스

           실제 힙에 있는 어떤 객체를 가리키게된다.

           원시 변수 = 실제 값을 나타내는 변수

           객체 레퍼런스 = 객체에 접근하는 방법을 알려주는 비트(주소가 들어 있음, 포인터)

           레퍼런스는 단 하나의 객체를 가리킨다.

 

 

4

매개변수와 인자

           둘은 동일한 말이지만 관점에서 따라 말이 달라짐

           메소드 안에서는 매개변수, 어디서 넘겨주는 것은 인자

          

           Int add(int a, int b){}      

           리턴타입  메소드명(타입 변수이름, 타입 변수이름){}

          

자바에서는 값으로 전달합니다. 즉 복사본을 전달합니다.

 

캡슐화와 데이터 은닉

           캡슐화는 인스턴스 변수를 private로 하고, 세터 게터로 받고 넘겨주고 한다.

           직접 변수에 접근을 막아 준다.

 

인스턴스 변수의 초기화

           생성자가 호출되면서 초기화 되고, 정수는 0, 부동소수 0.0, 부울 false, 문자 = null

 

 

인스턴스 변수와 지역 변수

           인스턴스 전체, 지역변수 메소드내의 변수

           지역변수는 초기화가 되지 않는다..초기화 시켜줘야 한다.

 

레퍼런스 변수

레퍼런스 변수에서 ==은 동일한 객체를 가리키는 것이냐라고 말한다.

인스턴스 변수에서 == 은 값이 같냐 이다..

String 클래스는 equals();메소드를 사용한다.

그러나 String클래스가 아닌 다른 클래스의 equals()메소드는 ==와 같은 말이다..

String 클래스는 재정의를 해서 동일한 인스턴스주소가 아닌 그 속의 값이 같냐 라고 재정의 했다.

 

상속

 

           상위클래스에서하위클래스로 상속을 해주고 extends(확장)이라고해준다

           하위클래스는 메소드를 오버라이드 할 수 있다.

하위클래스에서 메소드를 오버라이드 해주면 상위클래스와 하위클래스 중 가장 최신으로 작성한 하위클래스의 메소드를 JVM이 알아서 호출해준다.

          

상속 과 다형성

           코드의 중복을 막을 수 있다.

           다형성을 이용 할 수 있다..가장 강력한 이유

           Animal  a = new Dog();

           Animal  b = new Cat();

           For 문으로 한꺼번에 처리 할 수 있다..

           인자와 리턴타입도 가능하다.

           Animal add(Animal a);

           이런식으로 다형성을 이용하여 받을 수 있다.

 

           add(a),add(b);

 

오버라이드

           재정의

           인자는 똑같아야 하고, 리턴 유형은 호환 가능해야 한다.

 

오버로딩

           중복, 리턴 유형이 달라도 된다.

생성자

           안만들었으면 컴파일러가자동으로 만들어 주지만

           하나라도 만들어 줬으면 자동으로 만들어주지 않는다.

           초기화 작업이 필요 하거나 객체를 사용자가 쓰기 전에 필요한 준비작업

생성자 연쇄

           맨 처음 최상위 생성자가 호출되고, 그다음 밑에..밑에..밑에..이렇게 생성된다..차례대로..

           자신은 this.위계층은 super

 

별표,시험에 나온다 시험에 나온다.

5장에 16페이지 되나 안되나,,설명

ㅎㅎ

 

 

추상 클래스

           클래스 앞에 abstract달아주면 되고 인스턴스는 생성된다.

           new를 써서 자신을 받을 수는 없다.

           추상 메소드가 하나라도 있으면 무조건 추상 클래스이다.

           그냥 메소드도 만들 수 있다.

           확장하지 않으면 쓸모도 가치도 없다.

           다형성을 그대로 쓸 수 있다.

           배열 만들 수 있다.

          

추상 메소드

           반드시 오버라이드 해야 하는 메소드

           바디가 없는 메소드

           Public abstract void eat();

           이걸 가지고 있으면 반드시 추상 메소드가 되야 한다.

           만약에 구현을 안해주면 하위클래스로 넘길 수도 있다.

ArrayList<Object>

           <>안에 자신이 쓸 객체를 쓰면 그걸 배열로 쓸 수 있다.

 

다중상속은 자바에서 해결이 안된다.

하지만 인터페이스라는 것을 사용하여 다중상속과 같은 효과를 누릴 수 있다.

여러 개의 인터페이스를 받을 수 있다.

추상클래스와 비슷하다.

하지만 메소드는 추상메소드만 들어가야 한다.

인터 페이스끼리 확장(상속)??도 가능하다.

Public abstract 와 같은 메소드가 들어가야 한다.

 

Public intervface Pet{}

Public class Dog extends Animal implements Pet,Saveable,…{}

 

일반클래스:완전한 모습

추상클래스:추상메소드를 가지고 있는거, 구현된 메소드도 가질 수 있다.

인터페이스:무조건 추상메소드만 가진 것,, 상속트리에 관계 없이 어떤 역할을 하게 만들고 싶을때

'JAVA' 카테고리의 다른 글

16장  (0) 2010.09.03
15장 스레드  (0) 2010.09.02
자바 11장(예외처리)  (0) 2010.08.31
자바 10장  (0) 2010.08.31
JAVA 기본 용어..1  (0) 2010.08.23