목록Java (256)
코드 그라데이션
_01.Input (입력) package Prac22; import java.util.Scanner; public class _01_Input { public static void main(String[] args) { // 사용자 입력 Scanner sc = new Scanner(System.in); System.out.print("이름을 입력하세요 : "); String name = sc.next(); System.out.print("혈액형을 입력하세요 : "); String bloodType = sc.next(); System.out.print("키를 입력하세요 : "); int height = Integer.parseInt(sc.next()); // int height = sc.nextInt();..
final - 값을 변경할 수 없는 것. ex.) public [final] int max = 20; max = 30; (에러) 변수/ 메소드/ 클래스 에 사용가능하다 변수 final - 값을 변경 할 수 없다. 메소드 final - 오버라이딩 일때 사용 불가능 클래스 final - 상속 불가 사용 예시 final class T1 { } class T2 extends T1 { // T1 이 final이라 상속 불가능 } class T3 { final void abc() { } } class T4 extends T3 { //void abc() // final => 오버라이딩 불가능 } public class FinalTest { public static void main(String[] args) { //..
인터페이스 => 추상화의 끝판왕 interface 와 interface 끼리 상속이 가능하나, 반드시 class 가 재정의 해야한다. 약속을 표현하기 위한 특별한 형태의 클래스 인터페이스는 객체를 생성할 수 없음 생성자를 갖지 않는다 인터페이스의 메서드는 abstract 키워드를 붙이지 않더라도 기본이 추상메서드 Java 8에서 default method가 등장하여 인터페이스도 구현을 가진 메서드를 가질 수 있음 인터페이스의 메서드는 public 키워드를 붙이지 않더라도 기본이 public static 메서드를 가질 수 있음(Java 8~) 인스턴스 필드를 정의할 수 없음 인터페이스는 스펙인데 필드는 구현에 대한 세부내용이므로 필드를 가질 수 없다 형태 interface A{ 상수 추상메소드 void a..
추상화 일상에서의 사용 예시 말을 추상적으로 이야기한다. 현실적이지 않은 것을 현실적인 것 마냥 말한다. 즉, 실체는 없지만 뭔가 구상은 있는 것을 추상화라고 합니다. 추상화가 나온이유? => 메소드 오버라이딩 때문 메서드에서 사용하는 예시 void abc(){ System.out.println(“a”); } void abc(); ------------------------------------------------------------------------ "추상화 되어있는 메소드가 있다" 추상화 된 메소드를 가지고 있다는 것은 객체화를 할 수 없다는 말. 추상화 되어 있는 메서드를 가질 수 있는 것 1. abstract class 2. interface 특히 중요한 것. 추상화가 있으면 필수적으로 상..
참조자료형 형변환 예제 package mega.backend_onemore.Day24; class A{ int a; } class B extends A{ int b; } class C extends A{ int c; } class D extends A{ int d; } public class ClassCastingTest1 { public static void main(String[] args) { A a = new B(); //업캐스팅 B b = (B)a; // 다운캐스팅 B[] listB = new B[10]; C[] listC = new C[10]; D[] listD = new D[10]; // 이렇게 세 번 수고할 필요가 없이 // 아래처럼 한방에 만들고 집어넣으면 된다! A[] listA = n..
참조자료형 형변환 - 상속이 있어야 할 수 있습니다. - 부모는 자식을 모른다는 걸 명심해야 한다. 객체는 자식, 자료형은 부모 이렇게 이렇게 만든다. 예시 Class C { int a; } Class D extends C{ int b; } C c = new D(); // 업 캐스팅 D d = (D)c; // 다운 캐스팅 보는 방법은, 변수 자료형 타입(기준)으로 보면 된다. D로 만들고 C로 갔다. => 내가 볼 수 있는 건 C밖에 없다. 그 말은 C일 때 int b가 안 보인다는 것. 다시 D로 다운캐스팅 해주면? int b가 보인다. 즉, 부모 입장에서는 부모에 있는 것만 보이는 것이고, 자식은 부모 것도 다 가지고 있으니까, 전부 보인다. 왜 쓰는가? 이러한 관계가 있다고 가정했을 때, Class..
super - 상속에서 부모의 것을 의미함. - 부모 클래스의 생성자를 자식 클래스 생성자에서 활용할 때 필요함. super() super는 상속받은 부모 클래스에 대한 레퍼런스 변수 => 부모 클래스 멤버에 접근할 때 사용하는 키워드 / 자식 클래스의 모든 생성자는 부모 클래스 생성자를 포함하고 있어야 하는데, 그렇지 않은 경우 자바 컴파일러가 사실 자동으로 부모 클래스의 기본 생성자를 호출해준다. (만약, 부모 클래스에 기본 생성자가 없다면, 에러 부모 클래스 super. > 부모생성자 부모클래스() // 부모의 생성자 super.abc() // 부모의 메소드 super.a // 부모의 멤버 변수 또 예시 class A { A(int a) { } } class B extends A { B() { su..
상속 - 일반적으로, 부모가 자식에게 물려주는 것. - 자식 입장에서는 부모 것을 가져오는 것. 통념상 부모가 자식보다 범위가 크다고 여기고 있지만, 그렇기는 하죠... 자바에서는 자식이 사이즈가 더 크다!!! 상속을 왜 쓰죠? - 코드 재사용성이 좋아집니다. - 부모의 것을 받아 쓰고 + 내것 을 추가 할 수 있습니다.(확장) (상속의 움직이는 단위는 무조건 class) : 일단 현재까지는. 매우 단순한 기본 형태 Class A{ // 부모 } Class B extends A{ // A클래스 자식 } 상속의 특징 1. 클래스를 체계화 할 수 있다. 2. 확장이 가능하다. 3. 기존 클래스의 기능을 쉽게 변경할 수 있다 => 오버라이딩 상속과 관련한 자바 언어의 특징 * 다중상속을 지원하지 않는다. * ..