[CS 스터디] Java 특징

한주영·2023년 3월 1일
0

스터디

목록 보기
1/6

접근 제어자

객체지향에서 정보은닉이란 사용자가 굳이 알필요없느 정보는 사용자로부터 숨겨야한다는 개념

자바에서는 이러한 정보은닉을 위해 접근제어자를 제공함
클래스 외부로부터 직접 접근을 허용하지않는 멤버를 설정하여 정보 은닉을 구체화할수있디

1.private
2.public
3.default
4.protected

private

같은 클래스내에서만 사용 가능
외부 클래스에서는 직접 접근 불가능

public
외부 클래스까지 공개 가능
해당 객체를 사용하는 프로그램 어디에서나 직접 접근가능

default
접근 제어자의 기본값, 지정되않으면 자동으로 default를 사용하게 됨.

protected
부모 클래스에 대해서는 public처럼 취급
외부에서는 private 멤버처럼 취급

클래스,객체 인스턴스 차이

클래스란?

객체를 정의하고 만들어 내기위한 설계도 또는 틀
객체를 만들어내기 위한 변수와 메서드 들이 존재.

객체

클래스에 선언된 모양 그대로 생성된 실체를말함
클래스의 인스턴스 라고 부름

인스턴스

클래스를 통해서 구현해야할 대상이 실제로 구현된 실체를 말함

Overloading vs Overrinding

Overloading

같은 이름의 메서드를 중복하여 정의하는것

조건
1.메소드의 이름이 같아야함
2. 메소드의 매개변수개수 또는 타입이 달라야한다

void display(int num1)              // 전달받은 num1을 그대로 출력함.
void display(int num1, int num2)    // 전달받은 두 정수의 곱을 출력함.
void display(int num1, double num2) // 전달받은 정수와 실수의 합을 출력함.력하세요

Overrinding

상속 관계에 있는 부모클래스에서 이미 정의된 메소드를 자식 클래스에서 재정의

class Parent {
 void display() { System.out.println("부모 클래스의 display() 메소드입니다."); }
}
class Child extends Parent {
  void display() { System.out.println("자식 클래스의 display() 메소드입니다."); }
}
public class Inheritance05 {
     public static void main(String[] args) {
Parent pa = new Parent();
pa.display();
Child ch = new Child();
ch.display();
Parent pc = new Child();
pc.display(); // Child cp = new Parent();
 }
 }

조건
1. 메소드의 동작만을 재정의하는것으로 선언부는 기존메서드와 완전히같아야한다
2.부모클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경가능
3.부모클래스의 메소드보다 더 큰 범위의 예외를 선언할수없다

Primitve Type vs Refernece Type

기본타입(Primitve Type)

정수,실수,문자,논리 리터럴을 저장하는 타입
byte, char, short, int, long

참조타입(Refernece Type)

객체의 지변을 참조하는 타입
배열,열거,클래스,인터페이스를 이용해 선언된 변수에 있는 메모리 주소값을 갖게된다
주소를 통해 객체를 참조하는 타입

-Call by Reference vs Call By Value

Call by Reference

메서드 호출시에 사용되는 인자를 값이 아닌 주소를 넘겨줌으로써
주소를 참조하여 데이터 변경이 가능

Call By Value

메서드 호출시 사용되는 인자의 메모리에 저장되있는 값을 복사하여 보냄

-Wrpper Class

기본타입에 해당하는 데이터를 객체로 포장해주는 클래스
각각의 타입에 해당하는 데이터를 인수로 전달받아
해당값을 가지는 객체를 만들어준다
java.lang 패키지에 포함되어 제공

참고 및 출처:
http://www.tcpschool.com/

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글