1. 정적 바인딩 vs 동적 바인딩 – "자바에서 진짜 실행되는 건 뭘까?"자바에서 객체를 다룰 때, 우리가 쓰는 메서드는 언제, 어떤 기준으로 결정되는 걸까?부모 타입 변수로 자식 객체를 참조했을 때, 과연 호출되는 메서드는 누구 걸까?이때 나오는 개념이 바로 "정적 바인딩"과 "동적 바인딩"이다. 1-1. 바인딩이란?바인딩(binding)은 쉽게 말해"이 메서드 호출은 실제로 어떤 코드와 연결되어 있는가?" 를 말한다.이 연결이 컴파일할 때 정해지면 → 정적 바인딩,프로그램 실행 중에 정해지면 → 동적 바인딩이라고 한다. 1-2. 정적 바인딩 (Static Binding)컴파일할 때 호출할 메서드가 결정됨주로 static, final, private 메서드에서 발생함변수나 메서드 이름만 보고 컴파일러..
this는 자바(Java)를 포함한 여러 객체지향 언어에서 객체 자기 자신을 가리키는 키워드로 알려져 있다. this는 현재 객체의 참조(reference)로서 지금 실행되고 있는 메서드를 소유하고 있는 인스턴스를 가리킨다. setter 메서드안에서 가장 쉽게 this의 활용법을 확인할 수 있다. public class Person { private String name; public void setName(String name) { this.name = name; }}this.name → 객체의 멤버 변수 namename → 메서드의 매개변수만약에 this를 안 쓰면 어떻게 될까?public void setName(String name) { name = name; /..
단, 이 세 가지 개념은 생성자, 상속 이라는 개념을 알고 있어야만 이해 가능합니다. 중복 코드 줄여서 효율성 증대 2) 특징 - '자식클래스 extends 부모클래스'" data-og-host="awesomepossum.tistory.com" data-og-source-url="https://awesomepossum.tistory.com/223" data-og-image="https://blog.kakaocdn.net/dna/dzWoVc/hyXlVGQ2fK/AAAAAAAAAAAAAAAAAAAAAGlG7LHeO6Ea3ve_4rYUtzjeVJps3SOR_tHgjOGyKCdz/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=LV%2BmQmhz6Xfe1DG0OReAKtEKU1E%3D
1. 상속 1) 개념 - 부모클래스의 멤버 변수, 멤버 메서드를 자식 클래스가 상속 받아 사용 - 클래스 재사용 => 중복 코드 줄여서 효율성 증대 2) 특징 - '자식클래스 extends 부모클래스' 형식으로 상속 - 한 번에 하나의 부모 클래스만 상속 받을 수 있음. => C extends A, B (x) => C extends B , B extends A (o) - private 접근 제한을 갖는 멤버 변수 및 메서드는 직접 사용이 불가 => 그럼 어떻게 사용하냐? getter, setter 사용 3) 상속 관련 키워드 - extends 상속 받을 때 클래스명 옆에 사용 - super 자식 클래스에서 부모를 명시적으로 사용하고자 할 때 사..
안녕하세요오늘은 자바의 추상클래스(abstract) 와 인터페이스(Interface) 간단하게 알아봐요 여러분들 제가 제일 좋아하는 언어는 자바인데요그 중 인터페이스와 추상클래스에 헷갈리는 개념이 많아 정리해 보고자 글 남겨봅니다 제 블로그는 수익 창출을 하고 있지 않습니다제가 공부하면서 편하게 보고 정리하려고 만든 블로그이니 부족한 점이 많습니다궁금한점이나 코드에 오류 발견하시면 댓글 남겨주세요~ 언제나 환영입니다 1. 추상클래스(abstract class) - 하나 이상의 추상 메서드 포함하는 클래스- 즉 완성된 메서드, 미완성된 메서드 모두 가질 수 있음 인터페이스는 모든 메서드가 추상메서드로만 이루어져 있어야 함- 여기서 완성된 메서드는 메서드 옆에 { } 중괄호가 있는것. => 구현된 것으로 ..
package ex02닌텐도게임기; public class Dongmul extends GameChip { @Override public void start() { System.out.println("동물의숲 게임을 시작합니다."); } } package ex02닌텐도게임기; public class Mario extends GameChip { @Override public void start() { System.out.println("마리오카트 게임을 시작합니다."); } } package ex02닌텐도게임기; public class Zelda extends GameChip { @Override public void start() { System.out.println("젤다의 전설을 시작합니다."); }..