java

    [Java] Upcasting(업캐스팅), Downcasting(다운캐스팅), instanceof

    [Java] Upcasting(업캐스팅), Downcasting(다운캐스팅), instanceof

    전제조건: 상속의 관계에 있어어야 함 Up casting (업캐스팅) 부모 타입의 객체에 자식 클래스의 필드를 담아주는 것 부모 타입의 객체에 자식 생성자를 호출 필드의 사용 범위가 부모타입만큼 제한 되기 때문에 자식 클래스에서 추가된 내용은 사용할 수 없다. 단, 오버라이딩 된 메소드는 사용가능 자식필드는 존재하지만, 사용불가능인 개념 부모클래스 객체명 = new 자식생성자(); Car mycar = new SuperCar(); Down casting (다운캐스팅) 업 캐스팅 된 객체를 다시 자식타입으로 바꾸는 기법 업캐스팅이 되지 않은 객체는 다운캐스팅 불가능 업 캐스팅 된 객체에 다시 자식클래스의 필드를 달아주는 것 업 캐스팅시 잘려나갔던 자식 클래스의 내용들을 다시 사용할 수 있게 하려면 자식 클..

    [Java] static (정적) : 모든 객체가 공유

    [Java] static (정적) : 모든 객체가 공유

    static (정적) static이 붙은 변수, 메소드, 구역 등은 프로그램 실행시 가장 먼저 메모리에 올라간다. static 이 붙은 전역변수, 메소드는 모든 객체가 공유한다. static 이 붙은 변수는 가장 먼저 메모리에 static 영역으로 이동한다. 객체 안의 static 변수일 경우, 객체가 선언될때 객체 안에서 제외된채 생성되고, 메모리의 static 영역에 저장되며, 그것을 공유한다. static 이 붙은 메소드는 내부에서 각 객체의 필드에 올라오는 일반 전역변수와 일반 메소드는 사용할 수 없다.(아직 메모리에 올라오지 않았기 때문에 - static 은 가장 먼저 올라오기 때문에) public static void main(String[] args){}' 메인은 가장 먼저 메모리에 ..

    [Java] 다형성 Polymorphism : Overloading(오버로딩), Overriding(오버라이딩)

    [Java] 다형성 Polymorphism : Overloading(오버로딩), Overriding(오버라이딩)

    다형성(Polymorphism) 오버로딩 같은 이름의 메소드를 여러 개를 선언하는 기법이다. 매개변수의 개수 혹은 타입이 다르면 같은 이름의 메소드로 여러개 선언할 수 있다. 이름이 아니라 매개변수로 구별이 가능하다. 전달된 값의 타입 혹은 개수로 알아서 구분하여 알맞은 메소드가 자동으로 호출된다. //overloading void dog(){ System.out.println("매개변수 없음"); } void dog(int a, int b){ System.out.println("매개변수: " + a + b); } void dog(String c){ System.out.println("매개변수: " + c); } 오버로딩의 예 : 기본생성자와 매개변수가 있는 생성자가 동시에 있는 클래스 보통 기본생성자를..

    [Java] 상속(inheritance), 자식클래스 생성자, super()

    [Java] 상속(inheritance), 자식클래스 생성자, super()

    상속(inheritance) 기존에 선언된 클래스의 필드를 다른 클래스에서 사용하고자 할 때 실제 필드를 전달하는 것이 아닌 관계를 정의하는 개념 클래스들을 만들다 보니 공통요소가 보여서 부모로 묶은 후 상속시켜 주어서 사용하고자 할 때 class A{ A의 필드 } class B extends A{ B의 필드 + A의 필드 } B obj = new B(); //obj 객체는 실제로는 A의 필드와 B의 필드를 둘 다 가진다. A : 부모클래스/상위클래스, 슈퍼클래스/기반클래스 B : 자식클래스/하위클래스, 서브클래스/파생클래스 객체를 만들 때 클래스 사용 : 자식클래스의 생성자 생성자가 호출되었을 때 부모클래스의 필드가 먼저 생성되고, 자식클래스의 필드가 함께 복사되고, 객체는 그것을 가르킨다. supe..

    [Java] 클래스의 개념, 선언, 사용, 생성자, this

    [Java] 클래스의 개념, 선언, 사용, 생성자, this

    클래스(반) 공통적인 요소들을 추상적으로 묶어놓은 틀 여러 변수들과 메소드들을 둘다 관리 및 사용하기 위해 사용 객체지향의 반대는 절차지향이다. 주어이다. 모든 문장 맨앞에 클래스가 나온다. 영어는 맨 앞을 항상 대문자로 적는다. 따라서 클래스는 주어이고, 대문자로 시작한다. Monkey.eat(food) 주어 동사 목적어 타입이다. 클래스는 추상적인 개념이고, 이 클래스 안에는 필드가 존재한다. (필드: 클래스 내부) 추상적인 것을 바로 사용할 수 없기 때문에 그 필드들을 구체화 시킨 대상이 필요하다. 구체화시킨 대상 : 객체 instance variable 이라고 부른다. instance: 예시 -> 추상적인 개념의 한 예시로써 객체가 나오기 떄문에 instance varible 이라고 부른다. St..

    [Java] storage class(저장 기억 부류) : 변수 종류 //지역변수 전역변수 정적 변수

    [Java] storage class(저장 기억 부류) : 변수 종류 //지역변수 전역변수 정적 변수

    Storage Class(저장 기억 부류) 변수의 종류 지역변수 : 메소드 내부에 선언된 변수 전역변수 : 클래스 내부, 메소드 외부에 선언된 변수 정적변수 : static이 붙은 변수 지역변수 이클립스에서 색깔이 갈색 램의 Stack 영역에 생성 직접 초기화 필요 }닫는 중괄호 까지 사용가능 보안성 상 지역변수끼리 변수명이 같을수도 있음 전역변수 이클립스에서 파란색 색깔 램의 Data 영역에 생성 자동 초기화 프로그램 종료시 보안성 중 지역변수와 전역변수와 이름이 같을 수도 있음 -> 지역변수를 우선으로 불러옴 정적변수(static) static 이 붙어있는 main에서나 사용가능 이클립스에서 파란색 이탤릭체 램의 Data 영역 생성 자동 초기화 프로그램 종료시 보안성 하 static (정적) stat..

    [Java] 메소드 Method

    [Java] 메소드 Method

    메소드 이름 뒤에 소괄호 단. 키워드 뒤의 소괄호는 메소드가 아니다. 반복되는 기능, 코드, 행위를 쉽게 관리하기 위해서 사용 함수로 구성 메소드의 구조 1리턴타입 2메소드명(자료형 3매개변수1, 자료형 매개변수2,...){ 4호출시 실행할 문장 5return 리턴값; } 1 : return 뒤의 값의 타입에 맞는 자료형을 작성해준다. ​ * return 값이 없을 떄에는 void 로 작성해준다. 2 : 동사형으로 작성하는 것을 권장 ex) eat("치킨") eat("밥") 3 : 생략 가능; 생략시에는 외부(사용하는 곳)에서 값을 전달 받을 수 없고, 여러개의 값을 전달받아야할 떄에는 ',' 로 구분하여 값의 개수만큼 선언해준다. 사용시에는 매개변수의 타입과 개수에 맞게 순서대로 값을 전..

    [Java] 배열(1차원 배열, 2차원 배열)

    [Java] 배열(1차원 배열, 2차원 배열)

    배열 같은 자료형의 여러 변수를 나란히 나열해 놓은 것 여러 값들을 하나의 이름과 인덱스로 관리하기 위해서 사용 배열의 선언 자료형 [] 배열명 = {값1, 값2, 값3, 값4, ...}; 자료형 [] 배열명 = new 자료형[값의 개수] int [] arData = {10,20,30,40,50}; 배열의 인덱스 번호 실제 값들이 저장되어 있는 공간이 할당되면 이름은 존재하지 않고, 주소값만 존재한다. 시작 주소값을 배열명 변수가 가지고 있다. 주소연산을 통해 다음 주소값으로 이동한다. 시작주소에서 이동한 횟수가 인덱스 번호가 되고, 첫번째 방은 배열명이 가지고 있는 주소에서 0번 옮겨야 하므로 인덱스 번호는 0번부터 시작한다. 배열의 길이 배열명.length 2차원 배열 배열 안의 배열이 존재하는 형태..

    [Java]반복문 : For 문

    [Java]반복문 : For 문

    For문 횟수에 의한 반복문 반복 횟수가 특정된 경우 사용 정해진 것과 특정된것은 의미가 다름 특정되었다 : 정확한 횟수는 몰라도 횟수로써 제한되어 있다 무안가 값이 일정하게 변하는 반복일 경우에 높은 확률로 for문 사용 for(초기식;조건식;증감식){ 반복할문장이 조건이 참일 동안 반복 } 조건에 의한 반복문이 아닌 이유: 초기값과 증감정도를 정하기 때문에 횟수에 의한 반복문에 더 가까움 초기식에서는 새로운 변수를 선언 (i 권장) 내부에서만 그 변수를 사용 가능 for문안에서는 그 변수의 값으로 무언가 변하는 값을 나타낼 수 있다. 초기식 -> 증감식 -> 조건식 순으로 설계하고 사용한다. 횟수 = (끝값 - 초기값)/증감량 규칙성찾기 중요 표현할 값이 변하는 만큼 일단 i에 곱함 i의 초기값인 0..

    [Java] 반복문1  : while 문, do-while 문

    [Java] 반복문1 : while 문, do-while 문

    반복문 특정한 코드나 행위를 반복해야 할 때 사용하는 문장 조건에 의한 반복문 while 문, do~while문, while문 횟수에 의한 반복문 for문 while문 선평가 후실행 while(조건식){ 조건식의 연산 결과가 true 동안 반복할 문장 } do ~while문 선실행 후평가 while 문과 같지만, 무조건 한번은 실행한다. do{ 조건식의 연산결과가 참일동안 반복할 문장 } while(조건식); while문은 보통 무한반복일 때 사용 무한반복 while(true){ 무한반복할 문장 } while 문 뒤의 () 안에는 조건식, 즉 boolean 타입의 값이 와야한다. 따라서 그 안에 true 라는 값을 넣을 수 있고, 그 값을 상수로 작성했기 때문에 변하지 않는다. 따라서 그 while 문은..