목록Back-end/JAVA (41)
NULL
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0Y5nM/btrsFsJAVce/ve570JaNreKpNk9qeBOIS0/img.png)
인터페이스(interface) 역할 1. 인터페이스는 객체를 어떻게 구성해야할지 정리한 설계도이다. 2. 객체 교환성 or 다향성을 높여준다. 3. 인터페이스 변수에 인터페이스가 구현된 다른 구현 객체를 할당해서 사용가능하다. 4. 구현 객체를 직접 몰라도 인터페이스 메소드만 알아도 객체호출 가능. 5. 객체가 인터페이스를 사용하면, 인터페이스 메소드를 반드시 구현해야하는 제약 인터페이스를 이용해서, 개발코드를 직접 수정하지 않고 사용하고 있는 객체만 변경할 수 있도록 하기 위함이다. 인터페이스 정의방법 public interface TV{ public int MAX_VOLUME = 100; public int MIN_VOLUME = 0; public void turnOn(); public void tu..
값.getClass().getName
클래스 형변환 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다. 자식객체가 가지고 있는 메소드나 속성을 사용하고 싶다면 형변환을 해야한다. public class Car{ public void run(){ System.out.println("Car의 run메소드"); } } public class Bus extends Car{ public void ppangppang(){ System.out.println("빵빵."); } } 상속관계란 is a 관계이다. "Bus는 Car다" 라는 관계가 성립된 것이다. 현실에서도 버스를 가리키면서 차다. 라고 말한다. 부모타입으로 자식객체를 참조할 수 있다. 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수..
오버로딩과 오버라이딩 차이 오버로딩이란? 서로 다른 시그니처를 갖는 여러 메소드를 하나의 이름으로 정의하는 것이였다. 오버라이딩이란? 상속관계에 있는 부모클래스에서 이미 정의된 메소드를 자식클래스에서 같은 시그니처를 갖는 메소드로 재정의하는 것이라고 할 수 있다. 간단히 정의하면 오버로딩은 새로운 메소드를 정의 오버라이딩은 상속받은 기존 메소드를 재정의 class Parent { void display() { System.out.println("부모 클래스의 display() 메소드입니다."); } } class Child extends Parent { // 오버라이딩된 display() 메소드 void display() { System.out.println("자식 클래스의 display() 메소드입니다..
super와 부모생성자 class가 인스턴스화 될때 생성자가 실행되면서 객체의 초기화를 한다 그때 자신의 생성자만 실행되는게 아니라, 부모의 생성자부터 실행된다. 부모 생성자 public class Car{ public Car(){ System.out.println("Car의 기본생성자입니다."); } } public class Bus extends Car{ public Bus(){ System.out.println("Bus의 기본생성자입니다."); } } 생성자 테스트 public class BusExam{ public static void main(String args[]){ Bus b = new Bus(); } } 결과 Car의 기본생성자입니다. Bus의 기본생성자입니다. - new연산자로 Bus객..
추상클래스 구체적이지 않은 클래스를 의미한다. 예를 들면, 타조, 독수리는 구체적인 새를 지칭하지만 새, 포유류 같은 것은 구체적이지 않다. 추상클래스 정의 1. 클래스 앞에 abstract를 선언한다. 2. 추상클래스는 미완성의 추상 메소드를 포함할 수 있다. 3. 추상메소드란, 내용이 없는 메소드이다 즉 구현이 되지 않은 메소드이다. 4. 추상메소드는 리턴 타입 앞에 abstract 키워드를 붙어야한다. 5. 추상 클래스는 인스턴스 생성불가능하다. public abstract class Bird{ public abstract void sing(); public void fly(){ System.out.println("날다."); } } 추상클래스를 상속받는 클래스 생성하기 추상클래스를 상속받은 클래스..
캡슐화 관련된 내용을 모아서 가지고 있는 것 접근제한자 클래스내에서 멤버의 접근을 제한한다. 접근제한자 종류 public - 어떤 클래스든 모든 접근 허용 protected - 자신, 같은 패키지, 서로 다른 패키지라면 상속받은 자식클래스에서는 접근가능 private - 자신만 접근가능 접근제한자를 적지 않으면 default접근 지정자 - 자신과 같은 패키지에서만 접근가능 접근제한자 범위가 넓은 순서 public > protected > default > private
상속이란? 부모가 가지고 있는 것을 자식이 물려받는 것 즉. 부모가 가지고 있는 것을 자식이 사용 할 수 있게 된다. 사용법 public class 클래스명 extends 부모클래스명 // Car 클래스 선언 public class Car{ } // Car 클래스를 상속 받는 Bus 클래스 선언 public class Bus extends Car{ } 위와 같이 선언하게 되면 부모클래스 요소를 상속받게 된다. 부모가 가지고 있는 메소드 이외에 메소드를 추가로 선언하는 것을 확장한다고 한다. 주의사항 부모클래스는 자식이 가지고 있는 것을 사용 할 수 없다.
패키지(package)란? 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 다른 그룹에 속한 클래스와 클래스 이름간의 충돌을 막아줌으로 클래스 관리를 편하게 해준다. 패키지를 사용해야하는 이유 패키지를 사용하면 비슷한 클래스들끼리 묶어서 클래스 분류가 용이해진다. 자바코드를 작성하다보면 타인의 자바클래스나 라이브러리를 사용해야 할 경우도 많이 생기는데 이 때 클래스명이 동일한 경우 충돌이 일어나지만 패키지를 사용해서 클래스를 분류한다면 클래스명이 동일해도 충돌없이 사용가능하게 된다. 이와 같이 자바클래스를 배포용으로 작성하거나 한다면 반드시 패지키명을 포함하는 것이 옳은 방법이다. 간단히 클래스명 동일한 경우 패키지로 충돌방지 할 수 있다 클래스 분류에 용이하고, 패키지가 다르다면 동일 클래스명으로 사용..
생성자 오버로딩 생성자의 매개변수의 유형과 개수를 다르게 하여 같은 이름의 생성자를 여러개 가질 수 있다. 메소드와 마찬가지로 생성자도 여러개 선언가능하다. 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다. public class Car{ String name; int number; public Car(){ } public Car(String name){ this.name = name; } public Car(String name, int number){ this.name = name; this.number = number; } } 오버로딩된 생성자 이용하기 public class CarExam4{ public static void main(String args[]){ Car c1 = ..