일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 한번에insert하기
- 스프링시큐리티
- java
- 엔티티설계
- Git
- 코린이
- 0으로변환
- qclass
- 상속
- 오버라이딩
- 스프링부트
- 웹동작방식
- MySQL
- 기초
- 생성자
- 자바
- 업캐스팅
- 프로젝트
- static
- 메소드
- JPA
- 레포지토리설계
- 웹스토리지 사용법
- 네트워크
- 형변환
- http
- 파비콘에러
- git commit취소
- java기초
- 다운캐스팅
- Today
- Total
목록java (19)
딱콩이의 봄
✔️자바의 상속 구조는 단일 상속의 원칙을 갖기 때문에 하나의 클래스가 여러 부모 클래스를 상속할 수 없습니다. ✔️서로 다른 부모 클래스를 갖는 클래스 간에도 같은 인터페이스를 구현할 수 있습니다. ✔️같은 인터페이스를 구현하고 있는 클래스간에는 그 인터페이스로 하여금 대표성을 갖게 할 수 있습니다. public class InterfaceAssist { public static void main(String[] args){ play(new Soccer()); play(new baseGuitar()); } public static void play(IBehavior ib) { ib.play(); } } 인터페이스 IBehavior public interface IBehavior { void play()..
✔️인터페이스는 일반적으로 추상 메서드만 가지며 interface 키워드를 이용해 정의합니다. ✔️특정 클래스가 인터페이스를 구현하기 위해서는 implements 키워드를 통해 구현합니다. ✔️상속과 달리 인터페이스는 하나의 클래스가 둘 이상의 인터페이스를 동시해 구현할 수 있습니다.(다중 상속이 가능합니다.( ✔️인터페이스를 통해 설계와 구현을 완전히 분리할 수 있습니다. ✔️함수의 껍데기만 있으며, 그 함수의 구현을 강제하기 위해 사용됩니다. public interface IBehavior { public abstract void play(); //public abstract 생략가능 } public class Soccer extends Sport implements IBehavior { @Overr..
✔️추상 클래스는 하나 이상의 추상 메소드를 갖는 클래스입니다. ✔️상속 관계에서 부모 클래스의 역할을 갖기 위한 클래스이며 추상 메소드와 일반 메소드를 가질 수 있습니다. ✔️추상 메소드는 메소드의 바디가 없는 메소드이며 자식 클래스에서 재정의 하도록 하기 위한 메소드 입니다. ✔️추상 클래스는 new 동적 할당자를 통해 인스턴스 객체를 만들 수 없습니다. public abstract class Shape { private String type; public Shape(String type) { //자식 클래스가 호출하는 생성자 this.type = type; } public abstract void draw(); //추상 메소드 } public class AbstractAssist { public s..
✔️다형성은 하나의 객체가 다양한 형태로 처리될 수 있는 특성을 의미합니다. ✔️다형성을 구현하기 위해서는 상속, 재정의 메소드, 그리고 객체간의 형변환(업 캐스팅) 세가지 조건이 필요합니다. Shape[] shapes = new Shape[5]; //방 5개짜리 배열변수 선언 shapes[0] = new Rectangle();//0번방 자식클래스 Rectangle shapes[1] = new Ellipse();//1번방 자식클래스 Ellipse shapes[2] = new Line();//2번방 자식클래스 Line for(Shape shape : shapes) { shape.draw(); //shape 타입의 draw를 호출 } 🧐Reference https://youtu.be/GF6JUyFe3jQ
✔️업 캐스팅이 되어있을 때 자식 클래스가 갖고 있는 인스턴스 메서드는 호출할 수 없습니다. ✔️부모 클래스 타입의 변수로 참조하고 있는 자식 인스턴스 객체의 메서드를 호출하기 위해서는 down-casting이 이루어져야 합니다. public class InheritanceAssist{ public static void main(String[] args) { Shape shape = new Rectangle("Rectangle", 100); shape.getType(); shape.draw(); } } 💡오버라이딩 된 메서드가 있다라면, 설령 부모 모습으로 업 캐스팅되었을지라도, 오버 라이딩된 메서드는 자식 클래스의 오버 라이딩되어있는 메서드가 호출된다! 위의 코드에서 shape.draw(); 는 부모 ..
✔️상속 관계에서 자식 클래스가 부모 클래스 타입으로 참조되는 것이 허용되며 이를 up-casting이라 합니다. ✔️한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것을 down-casting 이라 합니다. public class Shape { public void draw() { System.out.println("Drawing Shape"); } } public class Rectangle exteds Shape{ @Override public void draw() { System.out.println("Drawing Rectangle"); } } public class Ellipse extends Shape{ @Override public void draw() ..
✔️오버 라이딩은 부모 클래스의 메서드를 자식 클래스가 확장하거나 다시 정의하는 것을 의미합니다. ✔️메소드메서드 재정의를 구현하는 방법은 부모 클래스로부터 상속받은 메서드의 반환 타입, 메서드명, 파라미터를 동일하게 하여 자식 클래스에서 정의하고, 메서드의 바디 즉 기능이 수행되는 부분이 확장이 되거나 변경이 됩니다. ✔️자식 클래스가 부모 클래스의 메소드를 재정의 할 때 접근 제한자의 범위는 넓거나 같아야 합니다. 부모클래스 자식클래스 private 재정의 불가 protected protected, public default default, protected,public public public public class Shape { public void draw() { System.out.printl..
💡생성자 호출 ✔️상속 관계에서 자식 클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스 화가 진행됩니다. ✔️자식 클래스의 객체가 인스턴스화 되기 위해서는 먼저 부모 클래스의 객체가 인스턴스화 되어야 합니다. 따라서, 상속 구조에서 가장 상위의 부모 클래스부터 차례로 인스턴스화가 진행됩니다. 💡Art 클래스 public class Art { public Art() { System.out.println("Art Constructor"); } } 💡💡Art 클래스를 상속 받은 Drawing 클래스 public class Drawing extends Art { public Drawing() { System.out.println("Drawing Constructor"); } } 💡💡💡Drawing 클래스를..