일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- git commit취소
- 다운캐스팅
- 스프링부트
- 0으로변환
- 기초
- 업캐스팅
- 엔티티설계
- 한번에insert하기
- 웹스토리지 사용법
- 파비콘에러
- 오버라이딩
- 웹동작방식
- 메소드
- JPA
- qclass
- 자바
- 스프링시큐리티
- java
- MySQL
- http
- 형변환
- static
- java기초
- 코린이
- 네트워크
- 프로젝트
- 생성자
- 상속
- Git
- 레포지토리설계
- Today
- Total
목록자바 (7)
딱콩이의 봄
✔️자바의 상속 구조는 단일 상속의 원칙을 갖기 때문에 하나의 클래스가 여러 부모 클래스를 상속할 수 없습니다. ✔️서로 다른 부모 클래스를 갖는 클래스 간에도 같은 인터페이스를 구현할 수 있습니다. ✔️같은 인터페이스를 구현하고 있는 클래스간에는 그 인터페이스로 하여금 대표성을 갖게 할 수 있습니다. 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..
✔️업 캐스팅이 되어있을 때 자식 클래스가 갖고 있는 인스턴스 메서드는 호출할 수 없습니다. ✔️부모 클래스 타입의 변수로 참조하고 있는 자식 인스턴스 객체의 메서드를 호출하기 위해서는 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() ..
✔️클래스 필드의 초기화는 다양한 방식으로 이루어질 수 있으며 이를 위해 다양한 형태의 생성자를 정의할 수 있습니다. ✔️생성자의 이름은 반드시 클래스의 이름과 동일해야 하기 때문에 다수의 생성자 정의는 생성자 오버로딩으로 정의합니다. ✔️생성자 오버로딩은 해당 클래스를 구성하는 생성자들의 매개변수 개수와 타입, 순서를 달리하여 정의합니다. ✔️객체의 인스턴스화 과정에서 생성자를 호출하며 이때 파라미터를 다르게 하여 필요한 생성자를 호출합니다. 예시1 class Animal { String name; void setName(String name) { this.name = name; } } class Dog extends Animal { void sleep() { System.out.println(this..
✔️매개 변수가 없고 구현 내용 없이 정의하는 생성자를 기본 생성자 혹은 디폴트 생성자 라고 합니다. ✔️클래스는 반드시 하나 이상의 생성자를 가지며 사용자가 생성자를 정의하지 않으면 디폴트 생성자가 자동으로 생성됩니다. but, 사용자가 작성한 생성자가 하나라도 구현되어 있다면 컴파일러는 디폴트 생성자를 추가하지 않습니다. ✔️생성자에서 명시적으로 필드의 값을 설정하지 않으면 디폴트 값으로 초기화 됩니다. 디폴트 초기값 : 숫자 타입(0), 논리 타입(false), 참조 타입(null) class Dog extends Animal { Dog() { //디폴트 생성자 } void sleep () { System.out.println(this.name + "zzz"); 🧐Reference https://y..
✔️연산자는 피연산자를 대상으로 특정 기능을 수행하고 결과를 반환하는 특수한 기호입니다. ✔️연산자의 구분은 피연산자의 수에 따라 단항, 이항, 삼항으로 구분하거나 기능의 종류에 따라 산술, 관계, 비트, 논리, 대입, 기타 연산자로 구분합니다. 대입 연산자 ✔️대입 연산자는 이항 연산자로 = 기호를 기준으로 오른쪽 값을 변수에 저장하는 기능을 합니다. ✔️대입 연산자는 산술 연산자와 함께 복합 연산자 형태로 사용할 수 있습니다. 연산자 예 의미 += x += 10 x = x + 10 -= x -= 10 x = x - 10 *= x *= 10 x = x * 10 /= x /= 10 x = x / 10 %= x %=10 x = x % 10 산술 연산자 연산자 연산식 의미 + 10+5 10과 5를 더한다. ..