728x90

추상메서드

키워드에서는 클래스와 메서드에 적용됩니다.

 

실체 클래스들의 메서드 이름들을 통일할 목적(즉 오버라이딩 강제화라고도 한다)으로 사용합니다.

추상메서드가 있는 클래스는 반드시 추상 클래스여야 합니다.

그러나 추상 클래스에 반드시 추상메서드만 선언할 필요는 없고 일반 메서드도 선언할 수있습니다.

각각의 특징을 가지고 있는 자식과 특징이 없는 부모.

부모의 특징과 자식이 틍징이 공통적으로 들어가있습니다.

 

 

추상 클래스

추상 클래스는 new키워드로 객체를 사용하지 못하고

오직 상속을 통해서 자식 클래스로 구체화 시켜야 합니다. 

추상 클래스도 일반 클래스와 마찬가지로 멤버변수, 생성자, 메소드를 선언할수 있습니다.

 

new 키워드는 호출 불가지만 super()호출하여 추상클래스 객체를 생성하므로 추상클래스도 생성자가 반드시 있어야합니다.

 

추상메서드

 

추상메서드는 추상 클래스 내에서만 선언할 수 있습니다.

추상메서드는 선언부만 있고 중괄호{}가 없는 메서드를 말합니다.

설계할때 자식 클래스가 반드시 실행 내용을 채우도록 강요하고 싶은 메서드가 있을경우, 해당 메서드를 추상 메서드로 선언합니다.

부모추상클래스의 추상메서드를 재정의하여 실행 내용을 작성해야합니다.

부모메소드에 abstract를 실행하였을때, 자식클래스에 상속을 하고 각각의 객체에 오버라이드 하여 강제로 내용을 바꿔줘야한다.

728x90

'lecture' 카테고리의 다른 글

예외 처리  (0) 2021.12.14
다중 catch(둘 이상의 예외 처리)  (0) 2021.12.14
Final  (0) 2021.12.10
Static  (0) 2021.12.10
다형성  (0) 2021.12.09
728x90

금지의 규제(abstract 와 반대가 될수 있는것)

쓰는 이유는 같이 사용하고 싶지않고 바꾸는것에 대한 금지를 설정하는 키워드이다.

 

클래스에 final 붙으면 상속이 불가능하고 

메소드에서 final을 붙으면 오버라이딩이 불가능하다.

변수 또한 변경이 불가능하다

 

final 또한 접근제어자리 다음에 사용을 합니다. 

 

String class 가 대표적 final 클라스 이빈다. 

 

final 변수

한번 값을 할당하면 그값을 변경할수 없습니다.

final 필드는 직접 초기화 또는 ㅡ생성자로 초기화 해야한다.

 

초기화 설정의 2가지 방법

직접 입력 ex) public final string name = "//";

생성자 줘서 초기화 하면 여러가지를 줄수 있슴.

thisname=name

 

final 키워드로 상수 사용

 

static과 final을 동시에 붙여 사용이 가능합니다

 

예시로 

public static final long version =1L;

상수 이름은 대문자로 적는 약속이 있습니다 그리고 연결된 단어는(_)를 사용합니다.

 

static 이 붙으면 클래스 상관없이 고정값이 됩니다.

static필드 이용해서 초기값 저장가능

 

이 문제에서 Person에서 nation은 이미 값을 선언하여서 변경이 불가능합니다, 다만 ssn과 name은 초기화 하지 않아 값을 따로 지정이 가능합니다.

728x90

'lecture' 카테고리의 다른 글

다중 catch(둘 이상의 예외 처리)  (0) 2021.12.14
Abstract  (0) 2021.12.10
Static  (0) 2021.12.10
다형성  (0) 2021.12.09
클래스 상속  (0) 2021.12.08
728x90

 

static - keyword

자바에서 엄청 중용한 언어입니다.~

static 이란 -

변수와 메서드에 적용되는 키워드 입니다. 

객체가 없어도 참조 가능하다.

static 제한자는 지정된 변수와 메서드를 객체와 무관하게 만들어주기 때문에 this를 가질수 없습니다.

static메서드는 non static 메서드로 재정의(overriding) 될수 없습니다.

대표적인 static메서드는 애플리케이션 main()메서드 입니다. 

 

 

정적변수 -

클래스들과 공유하는 변수이다.

2번째 특징 클래스 밖에 1개

객체 생성없이 클래스 이름 변수명으로 바로 접근 가능하다.

변수에 붙는 경우 1)공유변수 2)클래스 이름만으로 참조

ex) 다른 두개의 계산기에도 같은값을 얻을수있다.(PI값)

"static 하나로 완전히 다른 키워드 생성"

 

- 정적 변수는 객체를 만들어 참조할 수도 있지만, 객체를 만들지 않고 클래스 이름만 으로도 참조가 가능하기 때문에 이를 "클래스 변수"라고도 부릅니다

 

대표적인 static 변수는 Math.PI 

 

정적 메서드

 

static 메서드는 static변수와 마찬가지로 해당 클래스의 객체 생성 없이도 참조가 가능하게 해줍니다.

 

Static 메소드 안에서는 static 멤버만 사용가능

 

 

정적초기화

정적 초기화자는 static 변수들의 초기화에 사용합니다. 일반 멤버변수는 생성자에서 초기화 하지만 static변수는 객체 생성 없이도 사용해야 하므로 생성자를 통해 초기화 할수 없습니다.

 

그래서 static 변수는 정적 초기화자를 통해 초기화를 합니다.

 

정적 초기화자는 클래스가 로딩될 때 생성자와 main()메서드에 앞서 오직 단 한번만 실행 되서 

반드시 한번만 실행되어야 할 로직을 사용한다.

 

 

정말 중요한거니 이거는 외웁시다~ !! 

728x90

'lecture' 카테고리의 다른 글

Abstract  (0) 2021.12.10
Final  (0) 2021.12.10
다형성  (0) 2021.12.09
클래스 상속  (0) 2021.12.08
Day5 - Method  (0) 2021.12.05
728x90

다형성(Polymorphism)

영어가 참 어렵죠?? 쓰윽 읽고 넘어갑시다. ㅎㅎ 

 

다형성이란 " 객체가 여러 형태를 가진다" 라는 의미로 해석되며, 하나의 객체가 여러가지 유형으로 사용되는 것을 의미합니다.

 

-다형성은 상속을 전제조건으로 합니다.

 

-다형성을 위해 자바는 자식클래스가 부모클래스의 타입을 가질 수 있도록 허용합니다. 즉, 부모 타입에 모든 자식객체가 대입될 수 있습니다.

 

부모클래스 변수 = new 자식클래스()

 

이때 부모클래스에 있는 기능만 사용할 수 있지만,

오버라이딩 된 메서드는 먼저 실행됩니다.

 

왜쓸까요??

부모하나에 자식들을 다 담을수있는 편리성때문에~ 그렇다고 합니다.

오브젝트~ 제일 최상위 개층에 있습니다.. 여기 안에는 모든지 다 넣을수 있습니다.

 

이종 모음도 다형성의 원리이다.

 

이종모음(Heterogeneous Collection)

 

이종모음은 배열에 다형성을 적용시키는 원리입니다. 배열은 원래 동종모음 구조입니다.

예를들어 int[]iArr= new int[10]; 이런 구조의 배열이 있다면 iArr배열에는 int형 정수 데이터만 저장할 수있습니다.

 

 

 

 

 

 

 

 

 

 

 

매개변수의 다형성

-promotion은 멤버 변수의 값을 대입할 때도 발생하지만, 메서드를 호출할 때 사용하는 매개 변수에도 발생할 수있습니다.

 

-보통 메서드를 호출할 때는 메서드 선언부에서 지정한 데이터 타입과 일치하는 매개값을 전달하여 호출하지만, 매개 변수에 다형성을 적용하면 자식 객체를 전달할 수도 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

클래스 타입 확인!! instanceof 키워드

자바의 키워드 중에서 instaceof 는 객체가 지정한 클래스의 인스턴스인지 아닌지 검사 할때 사용하는 연산자입니다.

instaceof 연산자의 왼쪽 항의 객체가 오른쪽 항 클래스의 인스턴스 즉, 오른쪽 항의 객체가 생성되었다면 true를 리턴하고, 그렇지 않으면 false를 리턴합니다.

 

 

수고하셨습니다.

728x90

'lecture' 카테고리의 다른 글

Final  (0) 2021.12.10
Static  (0) 2021.12.10
클래스 상속  (0) 2021.12.08
Day5 - Method  (0) 2021.12.05
Day 5  (0) 2021.11.30
728x90

프로그램에서는 자식이 부모를 선택한다.!

자식 클래스를 선언할때 어떤부모 클래스를 상속받을 것인지를 결정하고 선택된 부모 클래스는 다음과 같이 extends 뒤에 기술한다.

 

Class 자식 클래스 extends 부모 클래스 {

//필드

//생성자

//메소드

 

}

 

예를 들어 Car 클래스를 상속해서 SportsCar 클래스를 설꼐하고 싶다면 다음과 같이 작성하면 된다.

class SportsCar extends Car{

다른 언어와는 달리 자바는 다중 상속을 허용하지 않는다. 즉 부모클래스가 무조건 하나만 와야한다.

 

부모 생성자 호출

현실에서 부모 없는 자식이 있을 수 있듯이 자바에서도 자식 객체를 생성하면, 부모 객체가 먼저 생성되고 자식개체가 그다음에 생성된다.

부모클래스 생성 - 자식 클래스 생성

모든 객체는 클래스의 생성자를 호출해야만 한다.

 

오버라이딩

 

부모클래스에서 생성된 생성자는 자식클래스에서 바꿀수있다.

 

부모클래스에서 쓰는 생성자는 자식클래스에서도 그대로 써준다.

 

부모 메소드 호출(super)

 

자식 클래스에서 부모 클래스의 메소드를 오버라이딩 하게 되면, 부모 클래스의 메소드는 숨겨지고 오버라이딩된 자식 메소드만 사용된다.

그러나 자식 클래스 내부에서 오버라이딩된 부모 클래스이 메소드를 호출해야 하는상황이 발생한다면 명시적으로 super키워드를 붙여서 부모 메소드를 호출할수있다.

super는 부모객체를 참조하고 있기 때문에 부모 메소드에 직접 접근할 수있다.

this

this는 자기 자신 객체를 지정할 때 사용하는 키워드입니다.

 

this. 을 사용하면 동일 클래스 내의 멤버(멤버변수,메서드)를 참조 할 수 있습니다.

this() 를 사용하며 생성자 내부에서 자신의 다른 생성자를 호출할 수있습니다.

 

 

접근 제한자 -Protected

 

-접근 제한자는 클래스와 멤버변수, 메서드,생성자의 접글을 제어할 수 있는 제한자입니다.

-라이브러러ㅣ 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 변수,생성자, 매서드를 설계하는것이 바람직합니다.

 

-외부에서 객체 생성을 막기 우이해 생성자를 호출하지 못하게 하거나 객체의 특정 데이터를 보호하기 위해 해당 멤버변수에 접근하지 못하도록 막는것이 접근 ㅈ제한자의 역할입니다.

클래스에는 접근 제한자를 public 과 default만 붙일수있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

정보은닉-캡슐화

은닉(Encapsulation)캡슐화

 

은닉은 상세한 내부부분은 숨기고 필요한 부분만 보이게 하는 것입니다.

은닉을 사용하기 위해서는 클래스의 멤버변수의 접근제한자를 private으로 설정합니다.

 

변수의 값을 변경시키는데 사용되는 메서드는 setter메서드 라고 부르며

변수의 값을 얻어오는데 사용하는 메서드를 getter메서드라고 부릅니다.

 

공개 메서드를 이용해서 데이터변경 할 경우 메서드내에 데이터 유효성을 검증할수있는 루틴을 넣을수있습니다.

 

접근 권한을 체크할수 있는 로직을 포함시키면 인가되지 않은 사용자에게 중요한 데이터나 로직을 숨길 수도 있습니다.

멤버변수만 private 제한자를 가지는 것은 아닙니다. 외부에 공개 하고 싶지않은 메서드들도 private으로 선언할수 있습니다.

728x90

'lecture' 카테고리의 다른 글

Static  (0) 2021.12.10
다형성  (0) 2021.12.09
Day5 - Method  (0) 2021.12.05
Day 5  (0) 2021.11.30
Day 4 -1  (1) 2021.11.27

+ Recent posts