목록Java/Mega (99)
코드 그라데이션
자료구조 : 데이터를 특정 구조로 모아놓은 것 자바에서의 자료구조 - 리스트(List), 집합(Set), 맵(Map) 등. 자료구조 특징 관련 인터페이스 관련 클래스 List (배열과 비슷) - 순서가 있음 - 데이터의 중복 가능 Collection List ArrayList LinkedList Stack(FILO) Set - 순서가 없음 Collection Set HashSet TreeSet LinkedHashSet Map - 키와 값으로 구성 - 키는 중복 불가 - 값은 중복 가능 (Key 키 , Value 값) Map HashMap TreeMap 간단한 설명 1. ArrayList - 점점 뒤로 붙여간다. 배열과 특징이 많이 유사 2. Set - 순서 딱히 없이 중구난방으로 퍼져있음. - 연결 되어..
배열의 단점 -> 1. 같은 자료형만 담을 수 있음(이를 해소하는 게 클래스) 2. 개수가 제한됨 - 객체가 생성될 때 클래스 안에 있는 자료형이 선택이 됩니다 내가 B를 만들려는 순간에 자료형이 세팅이 되어 바뀐다는 뜻. 단, 참조자료형만 됩니다. 기본자료형 X 결론은 안에 클래스밖에 안 된다는 뜻! 제네릭 예제 class Box { T vol; void setVolume(T vol) { this.vol = vol; } T getVolume() { return vol; } } public class GenericTest { public static void main(String[] args) { Box ibox = new Box(); ibox.setVolume(200); //ibox.setVolume(..
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) { //..
추상화 일상에서의 사용 예시 말을 추상적으로 이야기한다. 현실적이지 않은 것을 현실적인 것 마냥 말한다. 즉, 실체는 없지만 뭔가 구상은 있는 것을 추상화라고 합니다. 추상화가 나온이유? => 메소드 오버라이딩 때문 메서드에서 사용하는 예시 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. 기존 클래스의 기능을 쉽게 변경할 수 있다 => 오버라이딩 상속과 관련한 자바 언어의 특징 * 다중상속을 지원하지 않는다. * ..