본문 바로가기

Java20

Java Object class Object class : 모든 Java class의 최상위 class 명시적으로 상속하지 않아도 기본 상속되어있다. 객체라면 반드시 갖고있었으면 좋을거같은 기능이 들어있다. Object ↑ Test 다중상속은 불가능하지만 Object는 처음부터 상속 받게된다. Object ↑ First ↑ Second ↑ Test 나는 Test클래스에 int a=10; 멤버변수하나만 만들었는데 ... 메인함수에서 찍어보면 [a : int - Test ] 이외 다른 기능들이 엄청 많이 들어가있다. 왜 ?? Test클래스는 명시적으로 아무것도 상속하지 않았지만 기본적으로 Object클래스를 상속받은 상태이다 Object클래슥가 가진 주요 메소드 1. toString() Test t=new Test(); //Test클래스는.. 2023. 2. 6.
Java Polymorphism(다형성) Polymorphism 상속을 하게되면 메소드와 필드를 받게 된다. 부모변수로 자식객체를 참조할 수있다 . (참조변수) First class를 상속받은 Second class 부모참조변수는 자식객체를 참조할수있다. [Upcasting] 반대로 자식 참조변수가 부모객체를 컨트롤할순없다. [Downcasting] 다운캐스팅하려면 ?? 형변환을 해야하고, 한번이라도 업캐스팅되어있어야한다. 2023. 2. 6.
Java Interface(인터페이스) Interface : abstract만 가지는 완전체 추상 클래스. 인터페이스는 규칙없이 동작이름을 짓는것을 방지하기 위해 동작의 이름을 규격화시킨다. 기능의 이름을 통일시켜 관리를 용이하게 한다. 예를 들어 메모앱을 만든다고하자. 개발자들이 메모작성 메소드를 write, note, memo 등등 제각각쓰게되면 관리자 입장에서는 혼돈이 온다. 그래서 인터페이스를 구축하여 메모작성 메소드의 이름을 write로 통일하게끔 강제적으로 만든다. public interface Memo{ abstract void write();//기능의 이름만 정하는 설계도면임 ////일반 메소드는 만들수없다. 에러! 인터페이스는 규격을 만드는 메소드이다! //void show() { // //} //인터페이스 안에서는 모든 메소.. 2023. 2. 5.
java abstract 왜 abstract를 쓰는가?? abstract는 객체를 실제 만드려고 생성한 문법은 아니다. 참조변수까지는 생성 가능하나 new로 객체를 만드는것은 불가능하다. 여러 객체를 상속하여 제어하기 쉽게 도와주고 , 강제화된 이름을 써서 규격화한다. 예를들어, 게임캐릭터 (ch1클래스 ,ch2클래스 ,ch3클래스 )를 만든다고하자. 게임캐릭터가 이동할때 ch1은 walk , ch2는 run, ch3는 fly라고 하면 제어하기 힘들다. 이동할때 메소드는 move로 통일하고 이것을 제어하는 부모클래스가 있으면 관리가 편하다. 즉, 상속용으로만 존재하는 class이다. 추상클래스 문법적 특징 abstract class Employee { String name; int salary; public abstract vo.. 2023. 1. 30.
java Final Final : 직관적으로 이해! 마지막이라는뜻 ! class에 Final을 붙여보자 //나는 내 멤버를 상속하지 않을것이다 (그러나 나는 받을래) public final class First { void show() { System.out.println("First....."); } } class에 final을 붙이면 .. : 나는 내 멤버들을 넘겨주지않을거라는 뜻. 여기서 마지막이다. ※ 그렇지만 부모의 멤버는 받을것이다 (약간 이기적) 메소드와 필드에도 final을 붙이면.. public class Test { final int USER_NUM=100; //final 멤버변수도 처음에 만들때 초기화한다. //static변수 or class변수라고도 한다 public static final int CO.. 2023. 1. 29.
java 오버라이드(Override) 오버라이드(Override) : 상속받은 메소드를 수정하고싶을때 step1 임의의 클래스(First 클래스)를 만든다. public class First { private int a; public void show() { System.out.println("a : "+ a); } } step2 First를 상속받자 public class Second extends First{ private int b; //멤버값을 출력하는 메소드(상속받은 a변수도 출력할 의무가 있다) //상속받은 출력기능 show는 a 변수만 함.. 개선하자!! //이를 개선하기 위해 Override : 이미 부모에게 받은걸 좀 수정 public void show() { System.out.println(); //부모의 프빗a는 못쓴다.. 2023. 1. 29.