프로그래밍 언어(23)
-
오버로딩과 오버라이딩
(1) 오버로딩(Overloading) - 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것 오버로딩의 조건 1. 메소드 이름이 같아야 한다. 2. 매개변수의 갯수 또는 타입이 달라야 한다. (2) 오버라이딩(Overriding) - 조상 클래스로부터 상속받은 메소드의 내용을 변경하는 것을 오버라이딩이라 한다. - 자손 클래스에서 오버라이딩 하는 메소드는 조상 클래스의 메소드와 1. 이름이 같아야 한다. 2. 매개변수가 같아야 한다. 3. 반환타입이 같아야 한다. (3) 오버로딩과 오버라이딩의 차이 - 오버로딩은 기존에 없는 새로운 메소드를 추가하는 것이고, 오버라이딩은 조상으로부터 상속받은 메소드의 내용을 변경하는 것이다.
2023.09.06 -
생성자
(1) 생성자 - 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드이다. - 생성자의 이름은 클래스의 이름과 같아야 한다. - 생성자는 리턴값이 없다. - 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다.
2023.09.06 -
클래스 메소드와 인스턴스 메소드
1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다. - 생성된 각 인스턴스는 서로 독립적이기 때문에 각 인스턴스의 변수는 서로 다른 값을 유지한다. 그러나 모든 인스턴스에서 같은 값이 유지되어야 하는 변수는 static을 붙여서 클래스변수로 정의해야 한다. 2. 클래스 변수(static변수)는 인스턴스를 생성하지 않아도 사용할 수 있다. - static이 붙은 변수는 클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기 때문이다. 3. 클래스 메소드(static 메소드)는 인스턴스 변수를 사용할 수 없다. - 인스턴스변수는 인스턴스가 반드시 존재해야지만 사용할 수 있는데, 클래스 메소드는 인스턴스 생성 없이도 호출가능하니가 클래스 메소드가 호출될 때 인스..
2023.09.05 -
JVM의 메모리 구조
(1) JVM의 메모리 구조 1. 메소드 영역 - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스파일을 읽어서 분석하여 클래스에 대한 정보를 이곳에 저장한다. - 이때, 그 클래스의 클래스 변수도 이 영역에 함께 생성된다. 2. 힙 - 인스턴스가 생성되는 공간. - 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. - 즉, 인스턴스 변수들이 생성되는 공간이다. 3. 호출스택 - 메소드의 작업에 필요한 메모리 공간을 제공한다. - 메소드가 호출되면, 호출스택에 호출된 메소드를 위한 메모리가 할당되며, 이 메모리는 메소드가 작업을 수행하는 동안 지역변수들과 연산의 중간결과 등을 저장하는데 사용된다. - 그리고 메소드가 작업을 마치면 할당되었던 메모리공간은 반환되어 비워진다.
2023.09.05 -
변수와 메소드
(1) 변수의 종류 변수의 종류 선언위치 생성시기 클래스 변수 (class variable) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 (instance variable) 인스턴스가 생성되었을 때 지역변수 (local variable) 클래스 영역 이외의 영역 (메소드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 1. 인스턴스 변수 - 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다. 2. 클래스 변수 - 선언하는 방법은 인스턴스 변수 앞에 static을 붙이기만 하면 된다. - 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. - 한 클래스의 모든 인스턴스들이 공통적인 값을 ..
2023.09.04 -
클래스와 객체
(1) 클래스 - 객체를 정의해놓은 것 - 객체의 설계도 또는 틀 (2) 객체 - 실제로 존재하는 것 (3) 인스턴스 - 어떤 클래스로부터 만들어진 객체 - 인스턴스는 객체와 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있음 - 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 가지고 있음 (4) 객체의 구성요소 속성 : 멤버변수, 특성, 필드, 상태 기능 : 메소드, 함수, 행위
2023.09.04