참조 자료형 변환 상속이 있어야 할 수 있습니다. 객체는 자식인데 변수 자료형은 부모인 경우 - 업 캐스팅 변수의 자료형이 부모였는데 다시 본인 자료형으로 바꾸는 경우 - 다운 캐스팅 사용 예시 package Day24; class C{ int a; } class D extends C{ int b; } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub C c = new D(); // 업 캐스팅 D c = (D)c; // C를 다시 D로 변환시킬수도 있다. 다운 캐스팅 } } 사용 예시 2 class A{ } class B extends A{ } class C extends A{ } c..
Super extends 로 상속받은 자식 클래스에서. 부모클래스 생성자가 배개 변수를 받는 생성자인 경우. super를 사용해 부모클래스 생성자를 사용 할 수 있다. super > 부모 클래스 super. > 부모생성자 부모클래스() // 부모의 생성자 super.abc() // 부모의 메소드 super.a // 부모의 멤버 변수 사용 예시 class A{ int k; A(int a){ // int a 가 필요한 부모의 생성자 this.k = a; } void print() { System.out.println("A"); } } class B extends A{ int k; B() { super(5); // 자식 클래스에서 부모 클래스의 생성자에 int 5 를 넣어준다. } } 사용 예시 2 class..
상속 코드의 재 사용성 상속 받은 것을 포함, 받은 클래스 는 '상속받은 내용+클래스내용' (확장) 상속의 움직이는 단위는 무조건 class 사용 예시 class A{ // 부모 클래스 } class B extends A { // 자식 클래스 } 부모 클래스 class A 는 어느 클래스에 상속이 되었는 지 알 수 없다. 상속의 특징 클래스를 체계화 할 수 있다. 확장이 가능하다 기존 클래스 기능을 쉽게 변경 - 오버 라이딩 (중요) Java 언어의 특징 (상속) 다중 상속이 안된다. (2개 이상의 클래스 상속이 안된다) Java 는 상속 하나는 무조건 받습니다. Object 클래스 알기 쉽게 말하면 동시에 2개 이상의 상속은 안된다 extends A,B
접근 제한자 - 캡슐화 public - 공용의 누구나 사용 가능합니다. protected - 상속을 받은 클래스만 사용이 가능합니다. default - 같은 패키지내에서만 사용이 가능합니다. private - 나만 사용 가능함. 메소드의 보안을 위해 사용 된다. package Day20; class AA{ int a; public void setA(int a) { //로그나 여러 기능 사용 가능 this.a = a; } public int getA() { //로그나 여러 기능 사용 가능 return this.a; } } class BB{ int b; } public class AccessTest1 { public static void main(String[] args) { // TODO Auto-gene..
HAS 관계 다른 클래스를 안애 내장할 경우. - a 클래스의 안에 b 의 클래스를 가지고 있는 경우. 사용 예시 package Day16; class A { // A has B - > A는 B를 가지고 있다. int a; String str; B b; } class B { int x; } class C{ B b = new B(); } public class HasTest { public static void main(String[] args) { // TODO Auto-generated method stub A a = new A(); a.b = new B(); // A 클래스 > b 의 클래스를 생성자 해줘야 한다. a.b.x = 20; // 그래야 이렇게 int x를 불러올 수 있따. C c1 = n..
클래스 먼저 배열의 단점은 개수 제한 (자료 구조) 같은 자료형만 사용 가능. 이와 같기에 좀 더 포괄하는 개념의 클래스가 나오게 된다. 구조체 + 메소드(함수) = 클래스 // 속성 (데이터) + 기능(메소드) 구조체 : 여러 자료형 변수를 하나의 변수로 관리 예를 들자면 붕어빵틀(클래스) - 붕어빵 (객체) 자동차도면(클래스) - 자동차(객체) 클래스 장점 클래스만으로는 메모리에 올라가지 않음, 객체화를 진행 해야 메모리에 올라감 (자원 효율성) 재사용성이 좋아짐. 클래스의 객체 생성자 new + 클래스명(); (default 생성자) new Sample(); 이런식으로 선언한다. package Day16; class A{ int a; // 멤버변수(속성) void print(int a) { // 매..
매개변수는 대개 2가지 방식으로 넘어온다. Call by value reference 기본자료형 - Call by value 배열, 클래스 (참조 자료형) - Call by reference New -> reference (배열, Scanner 등..) Call by value value 값을 불러온다고 한다해도, 값만 불러온 것이지, 해당 값의 본체는 영향이 없다. Reference 배열, 클래스를 불러와 그 값을 다룬다면, 해당 값의 본체에 영향이 있다. Call by value 사용 예시 package Day13; public class CallRefTest { static void abc (int a) { a = 10; } public static void main(String[] args) { ..
메소드를 사용하면 코드의 재사용성이 좋아진다. - 코드의 간결화 대개 Value를 가지고 기능을 담당을 한다. 기능담당 -> 조건문 반복문 -> 연산자 프로그램 메소드 1. 입력, 출력 int abc (int a ...) { return 자료형 int } 2. 출력 int abc () { return 자료형 int } 3. void 입력 void abc(int a...) { } 4. void 입력 출력 void abc() { } 자료형(void) 함수명(매개변수) { 명령문 void(x) 자료형(o) -> return } package Day11; import java.util.Scanner; public class MethodTest2 { //1. 두수를 입력 static int input() { //..
int[] abc = new int[20][20] // 10번째 학생의 3번째 과목 abc[9][2] = 80 이런식으로 각 배열마다 지정해줘야 하는 데이터 수가 많아질 때 다차원 배열을 넣어줌으로, 쉽게 구분하고 가독성이 높아진다. 물론 1차원 배열로도 진행가능하나, 수학적 연산이 필요하고, 구분이 어렵다. int [][] c = new int [4] 이런식으로도 사용이 가능하다. 이후의 2차원 배열의 크기는 가변 배열 이다.
배열 : 하나의 배열로 여러개의 변수를 관리하는 기능 배열은 반복문이 가능 int 형 배열의 경우는 초기값이 0 으로 만들어짐 float 형 배열은 초기값 0.0 으로 만들어짐 이런식으로 사용한다. int[] a = new int[5]; int b[] = new int[5]; int[] kor = new int[100]; 모두 같으나, int b[] = new int[5]; 이런 식의 문법 사용은 자제하는 편이, 배열 문법 가독성에 이롭다.