목록분류 전체보기 (69)
개발자 항해
static 메서드 정적메서드라고도 하며 메서드 선언시 static을 붙여서 정의한다. static 멤버변수와 마찬가지로 클래스 로딩시 함께 메모리에 로딩되므로 클래스 명만으로 호출가능하다. 단, static 메서드 내에서는 인스턴스 멤버변수에 접근 불가하고 this,super사용도 불가하며, 일반메서드 호출도 불가능하다. 이유는 static메서드가 항상 먼저 호출되기때문 결론- static 메서드 내에서는 static 멤버만 접근 가능하다 활용 예 학교에 학생이 등록될때마다 학생번호가 자동으로 증가하게 할수 있다. 만약 static을 안쓴다면?
static ? 정적(고정된)이라는 의미를 갖고 있고 사용시 인스턴스 생성과 관계없이 클래스가 로딩되는 시점에 함께 메모리에 로딩된다. 이는 인스턴스 생성없이도 접근가능함을 의미한다(=클래스명만으로 접근 가능) 클래스, 메서드, 변수의 지정자로 사용가능하다. 참고) 자바 프로그램 실행 과정 1. 소스코드 작성 및 컴파일 후 클래스 실행 (ctrl +F11) 2. 클래스 로딩 - 클래스(정적,static) 멤버변수 및 메서드가 메모리에 로딩 3. main()메서드 호출 4. 인스턴스 생성 - 인스턴스 멤버변수,메서드가 메모리에 로딩 5. 메서드 호출 - 메서드 내의 로컬변수가 메모리에 로딩 6. 결과 출력
변수 선언 위치에 따른 분류 1. 로컬 변수(Local Variable) 메서드 내부에서 선언된 변수로 해당 메서드안에서 사용 가능하며 스택메모리에 생성된다. 그리고 반드시 초기화한후 사용해야한다. 2. 멤버변수(Member Variable) 클래스가 생성될때 힙메모리에 생성되며, 클래스 내부나 메서드 외부에서 선언되는 변수로 클래스 내에서 사용가능하다. 멤버변수는 별도의 초기화를 하지 않을경우에는 기본값으로 자동 초기화가 된다. 1) 인스턴스 멤버변수 인스턴스가 생성(new)될때 메모리에 로딩되며 인스턴스가 제거되는 시점에 메모리에서 제거된다. 그리고 인스턴스가 생성(new)될때마다 각각의 새로운 공간이 할당된다. 2) 클래스(static) 멤버변수 정적변수 라고도 하며 static 키워드를 붙여 사용..
생성자 오버로드란? 매개변수(parameter)가 다른 생성자를 여러개 정의하는 것을 말한다. 아래사진을 보면 마법사는 이름,공격력, 체력을 초기화하였고 전사는 애초에 무기를 갖고 있는 설정을 주고 싶어 이름,공격력,체력 + 무기까지 초기화 시켜주었다. 이렇듯 원하는 생성자를 골라 인스턴스 변수 값을 따로 초기화 시킬수있다.
인스턴스란? 클래스의 객체를 인스턴스라고 하며 이는 클래스가 메모리 공간에 할당된 상태(Heap 메모리에 생성)이다. 클래스명 변수명 = new 생성자(); 형태로 표현되는데 이때 생성된 변수는 stack 메모리에 저장되고 Heap에 저장된 인스턴스가 자신의 주소값를 리턴해주어 그 주소값을 가진다. Hero 클래스를 생성하여 그에 대한 인스턴스를 만들어보았다. Hero 클래스의 hero와 hero1 인스턴스를 생성하여 출력해보면 아래와 같이 서로 다른 주소값이 나온다. 즉 new로 생성할때마다 서로 다른 새로운 객체가 생성됨을 의미한다.
클래스란? 객체의 특성,속성 기능을 구현한것이다. 클래스의 구성요소로 멤버변수,생성자,메소드가 있다. 아래는 멤버변수,생성자까지만 적어보았다. 메소드는 다른편에서 다루도록한다. 예를들어 히어로라는 객체가 있다고 하자. 히어로라는 객체의 특성으로는 이름,공격력,체력 등이있다. Hero 클래스를 만들어보았다. 멤버변수 클래스내에 Hero 속성을 나타내는 name,attack,hp를 멤버변수라한다. 멤버변수로는 int,double과 같은 기본자료형이 올수도 있고 Weapon w처럼 개발자정의 클래스나 String 클래스등 여러클래스가 올수도 있다. 생성자 생성자란 인스턴스 값을 초기화해주는것으로 첫번째 사진에 초록색으로 Hero()라고 적힌 곳은 Hero()클래스 생성자이다. 첫번째 생성자 처럼 아무것도 없는..
객체지향프로그램(Object-Oriented Programming : OOP) 객체를 기반으로 하는 프로그램으로 객체와 객체 간의 관계를 프로그래밍한 것이다. 예컨데 '사람'이라는 객체와 '밥'이라는 객체 사이에 일어나는 일인 '먹는다' 라는 행위를 프로그램으로 구현하는것이다. 절차지향언어에 비해 코드를 재사용과 유지보수가 용이하다는 장점이 있으나 처리속도가 느리고 설계하는데 많은 시간이 든다는 것이 단점이다. JAVA가 대표적인 객체지향프로그램으로 JVM(java virtual machine : 자바가상머신)을 갖고있는게 특징이다. 그로인해 '한번 작성하면, 어디서든 돌아간다'는 슬로건처럼 자바로 프로그래밍하면 윈도우건 리눅스건 어떤 운영체제 에서도 구애받지 않고 잘 실행된다. 그리고 메모리를 직접 제..