
다형성(polymorphism) -사전적 의미 : 여러 가지 형태를 취할 수 있는 능력 -하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것. 즉 조상의 참조 변수로 자손 타입의 객체를 다룰 수 있는 것. =>원래의 타입은 유지됨. =>하나의 코드로 여러 자료형으로 구현되어 실행, 같은 코드로 여러 다른 실행 결과가 나옴. -정보 은닉, 상속과 더불어 OOP의 가장 큰 특징 중 하나임. -다형성은 잘 활용하면 유연하고 확장성있고, 유지 보수가 편리한 프로그램을 만들 수 있음. 다형성으로 인한 형변환(캐스팅) 1) 형변환의 전제 조건 --상속, 구현 관계에 있는 것만 객체 타입 변환이 가능. 2) Up-casting (암시적 형변환) : 자손 타입에서 조상 타입으로 형변환, 형변환 생략 가능. =>조..

상속(inheritance) -기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 -관계없는 두 개 이상의 클래스를 조상(부모), 자손(자식)으로 직접적 관계를 만듦. -자손은 조상의 모든 멤버를 상속받음.(But 생성자, 초기화 블록 제외) -자손의 멤버 개수가 조상보다 적을 수는 없음.(같거나 많음) ==>다형성 개념 적용 -is a관계 : ~은 ~이다. (호랑이는 포유류이다.) -만들어질 클래스에 영향을 가장 많이 주는 클래스는 상속하고 보존적인 것은 포함으로 구현. -자바는 단일 상속만 허용함. 상속하는 클래스 : parent class, base class, super class 상속받는 클래스 : child class, derived class, sub class 포함 관계(composit..

문제 : 위와 같이 출력되는 코드 만들기 먼저 스캐너로 반 수를 입력받는다. 2차원 배열로 점수 입력받기 합계, 평균 구해서 표로 출력하기

배열이란? -자료를 순차적으로 한꺼번에 관리하는 방법 -동일한 자료형의 순차적 자료 구조 -배열의 순서는 0부터 시작 -자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함 배열의 선언과 초기화 1)배열 선언하기 int [ ] arr1 = new int[10]; int arr1[ ]=new int[10]; 2)배열 초기화하기 -배열은 선언과 동시에 자료형에 따라 초기화됨.(정수는 0, 실수는 0.0, 객체는 null) -필요에 따라 초기값을 지정할 수 있음. int[] numbers=new int[]{10,20,30}; //개수 생략해야함. int[] numbers={10,20,30}; //new int[] 생략 가능 int[] ids; //선언 후 배열을 생성하는 경우 ids=new int[]..

변수의 종류, 유효 범위와 메모리 변수유형 선언위치 사용범위 메모리 생성과 소멸 ---------------------------------------------------------------------------------------------------------------- 지역변수 메서드 내부 메서드 내부 스택 함수가 호출될 때 생성되고 (local var) 함수가 끝나면 소멸됨. 멤버변수 클래스 멤버 클래스 내부 힙 인스턴스가 생성될 때 힙에 생성, 변수로 선언 GC가 메모리 수거할 때 소멸됨. static 변수 클래스 내부 클래스 내부 데이터영역 프로그램이 처음 시작할 때 (클래스 변수) 상수와 함께 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸됨. --------------------..

4가지 모양이 각 13장씩 있는 총 52장 카드 뽑기 예제 만들기 클래스 3개가 필요하다. //Card 클래스 //카드 개수와 무늬를 상수로 선언해준다. //생성자를 추가하고 //toString()으로 오버라이딩 해준다. //Deck 클래스에 초기화 블록을 생성한다. //뽑는 기능 //카드 섞는 기능을 추가한다. //pick() 메서드 호출해서 출력해보기 //★중요★ //초기화블럭을 사용했기 때문에 생성자보다 먼저 실행됨 //섞어보면 //랜덤으로 섞어서 나온다. (너무 기니까 생략)

생성자(Constructors) -모든 클래스는 반드시 최소한 하나의 생성자가 있어야 함. -객체를 생성할 때 new 키워드와 함께 사용함. -생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new와 함께 호출됨. -객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출함. -생성자는 반환값이 없고 생성자 이름은 클래스 이름과 동일함. -대부분의 생성자는 외부에서 접근 가능하지만(public) 필요에 따라 private으로 선언되는 경우도 있다. 기본 생성자(default constructor) -클래스에 반드시 적어도 하나 이상의 생성자는 존재해야 한다. -클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음. -클래스..

JVM의 메모리 구조 1. 호출스택(Call Stack) -- LIFO (Last In First Out), 후입선출, 가장 마지막에 들어온 자료가 가장 먼저 삭제된다. -메서드의 저장 공간 -메서드가 호출되면 메서드 수행에 필요한 메모리 공간을 할당받고 -메서드가 종료되면 사용하던 메모리를 반환함. ->프로그램의 시작점 main()이 시작하면서 필요한 메모리 공간을 할당함. ->호출 스택에서 맨 위에 있는 메서드가 현재 실행 중이며 아래에 있는 메서드가 바로 위에 메서드를 호출한 메서드이며 대기 상태로 있음. 2. 힙(Heap) -인스턴스가 생기는 공간 -new 연산자에 의해 생성되는 객체는 모두 여기에 생성됨. 호출 스택 (Call Stack) 확인 예제 같은 클래스에 있는 메서드를 .으로 호출 가능..