국비학원

    [Java] day15. 추상클래스/ 인터페이스

    추상클래스와 인터페이스 상속과 다형성에 이어진 개념에 대해 배웠다. 암기해야할 것들이 조금 있는 추상클래스와 인터페이스..... 조금 어려웠다. 각각 아직은 프로그래밍을 실제로 하고 있지 않아 이러한 개념을 왜 사용해야 하는지 크게 와닿지 않았다. 추후 이 개념을 사용하게 될 날을 위해 우선 개념적으로 숙지해야겠다. 추상클래스 추상클래스는 곧 미완성 클래스 이다. 내용이 작성되지 않은 클래스. 메소드를 정의했지만 정작 알멩이는 없는 클래스이다. 이런 미완성 클래스를 왜 사용하는 것일까? 추상클래스를 상속 받은 하위클래스를 이용해서, 이 하위클래스는 추상클래스를 완성시킨다.... why ?? 추상클래스는 필수 기능을 정의해서 오버라이딩을 꼭 해야한다고 강제성을 부여하는 것이다. 바로 다형성을 활용하는 개념..

    [Java] day14. 다형성

    전 수업과 깊게 연관된 내용으로 이전 포스팅을 첨부한다. JAVA 국비교육 day13. 상속 / 오버라이딩 상속 부모클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것처럼 사용할 수 있도록 만든 기술 멤버 외에 타입 또한 상속이 된다 . 다형성의 토대 자바는 단일 상속(하나의 클래스 tm-im.tistory.com 이제 클래스와 객체 파트 이후로 과제가 클래스다이어그램을 읽어내고 그에 맞는 여러 클래스를 만들고. 객체 생성과 메소드 호출하는 법, 상속 관계에 맞춰 프로그래밍하는 걸 연습하다보니까 블로그에 연습문제의 어느 부분을 딱 올리기가 시간이 오래 걸려서 다른 방식의 포스팅이 필요할 것 같다. 차라리 문제 풀이 중 알게 되는 부분을 TIL로 간단히 올리는게 나을 것 같다. 다형성부터는 정말..

    [Java] day13. 상속 / 오버라이딩

    상속 부모클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것처럼 사용할 수 있도록 만든 기술 멤버 외에 타입 또한 상속이 된다 . 다형성의 토대 자바는 단일 상속(하나의 클래스만을 부모클래스로 가짐)을 지원 클래스 간의 상속 시에는 extends 키워드를 사용 public class Academy extends Company{} 장점 새로운 클래스를 작성 시 기존에 작성 된 클래스의 재사용 가능 클래스간 계층 관계가 형성되어 다형성 문법의 토대가 됨 단점 부모클래스의 기능 변경 시 자식클래스의 정상적인 동작 유무 예측이 힘듦 자식클래스가 물려받아 사용하는 기능들을 부모클래스에서 변경 시 어려움이 따름 부모클래스로부터 물려받은 기능이 자식클래스에서는 무의미 할 수 있음 장단점을 고려해 볼 때 I..

    [Java] day12. 객체배열

    객체배열 레퍼런스 변수에 대한 배열 동일한 타입의 여러 인스턴스들을 배열로 관리할 수 있다. 생선한 인스턴스도 배열을 이용해서 관리하면 동일한 타입의 여러 개 인스턴스를 각각 취급하지 않고 연속 처리할 수 있어서 유용하다. 또한 반환값은 1개의 값만 반환할 수 있기 때문에 동일한 타입의 여러 인스턴스를 반환해야 하는 경우 객체 배열을 이용할 수 있다. 선언 클래스명[] 배열명; 클래스명 배열명[]; Product[] pArr; Product pArr[]; 할당 배열명 = new 클래스명[배열크기]; pArr = new Product[3]; 선언과 동시에 할당 클래스명 배열명[] = new 클래스명[배열크기]; Product pArr[] = new Product[3]; 인덱스를 이용한 초기화 배열명[i] ..

    [Java] day11. 오버로딩 / Static

    오버로딩 ( overloading ) 이란 동일한 메소드명 으로 다양한 종류의 매개변수에 따라 다르게 처리해야하는 것을 관리하기 위해 사용하는 기술 동일한 메소드명의 매개변수의 타입 , 개수 , 순서 를 다르게 작성 (메소드의 시그니처 가 다르지만 메소드 명은 같게 함) 생성자 작성 시 매개변수 부분의 타입, 갯수, 순서를 다르게 작성하면 서로 다른 생성자로 인식해서 동일한 이름이지만 여러 개 작성할 수 있었다. = > 오버로딩 ( Overloading ) 오버로딩의 사용이유 동일한 기능의 메소드를 매개변수에 따라 다르게 이름을 정의하면 복잡하고 관리하기가 어려워 진다. 따라서 동일한 이름으로 다양한 종류의 매개변수에 따라 처리해야 하는 여러 메소드를 동일한 이름으로 관리하기 위해 사용한다. 오버로딩의 ..

    [Java] day10. 클래스와 객체 / 캡슐화 / 생성자

    다들 객체까지는 예습하라고 했는데, 안했기 때문에 두렵다.. 객체지향언어 OOP 제발 이해할 수 있길. 클래스 클래스는 서로 다른 자료형의 데이터들 을 사용자 개발자 ) 정의로 하나로 묶어 새로운 타입을 정의 배열과 달리 다른 자료형들의 값을 하나로 묶을 수 있음 다른 곳에서 클래스의 필드에 접근하기 위해 '.' (참조연산자)를 활용. 클래스 내부에는 메소드를 작성하지 않고 바로 변수를 선언할 수 도 있다. 이것을 전역변수( 필드 == 인스턴스 변수 == 속성)라고 부른다. 필드에 접근하기 위해서는 레퍼런스명.필드명 으로 접근한다. ' . '은 참조연산자 라고 하는데, 레퍼런스 변수가 참조하고 있는 주소로 접근한다는 의미를 가진다. 각 공간을 필드명으로 접근한다. (배열은 인덱스로 접근, 객체는 필드명으..

    [Java] day9. 배열을 복사하는 방법 얕은복사/깊은 복사

    배열의 복사 배열의 복사에는 크게 두가지 종류가 있다. 1. 얕은 복사 (shallow copy) : 스택의 주소값만 복사 얕은 복사는 스택에 저장되어 있는 배열의 주소값만 복사한다는 것이다. 따라서 두개의 래퍼런스 변수는 동일한 배열의 주소값을 가지고 있다. 하나의 래퍼런스 변수에 저장된 주소값을 가지고 배열의 내용을 수정(값 변경)을 하게되면 다른 레퍼런스 변수로 배열을 접근했을 때도 동일한 배열을 가리키고 있기 때문에 변경된 값이 반영되어 있다. /*얕은 복사를 확인할 원본 배열 생성*/ int[] originArr = {1,2,3,4,5}; /*카피할 배열*/ int[] copyArr = originArr; /* hashcode를 출력해보면 두 개의 래퍼런스 변수는 동일한 주소를 가지고 있는 것을..

    Java 문제풀이 4-4. 학생들 분단 나누기. 다차원 배열 문제

    문제 /* 길이 12의 문자열 배열을 생성하여 12명의 학생들을 출석부 순으로 1차원 배열에 할당하고, * 2열 3행 2차원 배열을 2개 할당하여 각 1분단 2분단이라고 칭한다. * 순차적으로 1분단 부터, 왼쪽부터 오른쪽, 1행에서 아래 행으로 번호 순으로 자리를 배치하고 출력하세요*/ * -- 출력 예시 -- * == 1분단 == * 홍길동 이순신 * 유관순 윤봉길 * 장영실 임꺽정 * * == 2분단 == * 장보고 이태백 * 김정희 대조영 * 김유신 이사부 */ 작성한 코드) String[] sarr = {"홍길동","이순신","유관순","윤봉길","장영실" ,"임꺽정","장보고","이태백","김정희","대조영","김유신","이사부"}; String[][] student1 =new String[2..

    Java 문제풀이 4-3. 이차원 배열로 랜덤 영문자 출력하기.

    문제 /* 가로와 세로 길이를 정수형으로 입력 받아 입력받은 가로 세로 길이를 이용하여 * 이차원 배열을 할당하고 각 인덱스에는 랜덤으로 알파벳 대문자 넣어서 출력 * * 단, 가로 행 혹은 세로 열은 반드시 1~10 까지의 정수를 입력해야 하고 그렇지 않은 경우에는 * "반드시 1~10까지의 정수를 입력해야 합니다. 다시 입력하세요." 출력 후 * 가로 행 또는 세로 열을 다시 입력받을 수 있도록 한다. * * -- 입력 예시 -- * 가로 행의 수를 입력하세요 : 5 * 세로 열의 수를 입력하세요 : 4 * * -- 출력 예시 -- * F H Z G * W F O T * O R X V * W H J X * W S S J */ 작성한 코드) while(true) { Scanner sc = new Sca..