본문 바로가기

개발 관련 지식/자바(Java)

[자바] 제어자(modifier) * 제어자 : 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 제어자는 클래스나 멤버변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. 즉, 하나의 대상에 대해서 public과 private을 함께 사용할 수 없다는 것이다. - 접근 제어자 : public, protected, default, private - 그 외 : static, fianl, abstract, native, transient, synchronized, volatile, strictfp * static(클래스의,.. 더보기
[자바] 패키지(Package) 와 임폴트(Import) * 패키지(package) : 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함 시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지 체계를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다. * import문 : import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아 낸 다음, 모든 클래스이름 앞에 패키지명을 붙여 준다. 더보기
[자바] 오버라이딩(Overriding) * 오버라이딩 : 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속 받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야 하는 경우가 많다. 이럴 때 조상의 메서드를 오버라이딩한다. package Exercise; public class OverridingTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Point3D p3 = new Point3D(); p3.x = 10; p3.y = 20; p3.z = 30; System.out.println("result: ["+p3.getLocation()+"]"); } } .. 더보기
[자바] 변수의 초기화 * 변수의 초기화 : 멤버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수는 반드시 사용하기 전에 초기화를 해주어야 한다. void method1(){ int i; int j; //System.out.println("i["+"]"+i); // 사용불가! i가 초기화가 되어 있지 않음! } 더보기
[자바] 생성자(Constructor) * 생성자 : 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. * 생성자의 조건 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. * 생성자의 사용 방법 클래스 이름(타입 변수명, 타입 변수명, ...) { //인스턴스 생성 시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적는다. } class Card{ Card(){ //매개변수가 없는 생성자 // ... } Card(String k, int num){ //매개변수가 있는 생성자 // ... } // ... } * 인스턴스 생성 수행 과정 Card c = new Card(); 1... 더보기
[자바] 메서드 오버로딩(method overloading) * 메서드 오버로딩 : 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것으로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 하지만 매개변수의 개수 또는 타입을 다르게 하면 같은 이름을 사용해서 메서드를 정의할 수 있다. * 오버로딩 조건 1. 메서드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 3. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다. (리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.) int add(int a, long b) { return (int)(a+b); } int add(long a, int b) { return (int)a+b; } void println() void println.. 더보기
[자바] 클래스멤버와 인스턴스멤버 간의 참조와 호출 * 클래스멤버와 인스턴스멤버 간의 참조와 호출 : 같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 단, 클래스멤버가 인스턴스멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다. 그 이유는 인스턴스 멤버가 존재하는 시점에 클래스멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재할 수도 있고 존재하지 않을 수도 있기 때문이다. package Exercise; class TestClass1 { void instanceMethod() { System.out.println("instanceMethod()");}; //인스턴스 메서드 static void staticMethod() {System.out.println("st.. 더보기
[자바] 클래스메서드(static 메서드)와 인스턴스메서드 * 인스턴스 메서드 : 인스턴스변수와 관련된 작업을 하는, 즉 메서드의 작업을 수행하는데 인스턴스변수를 필요로 하는 메서드이다. * 클래스 메서드 : 메서드 중 인스턴스와 관계없는(인스턴스변수나 인스턴스메서드를 사용하지 않는) 메서드를 클래스메서드(static 메서드)로 정의한다. 1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다. 2. 클래스변수(static변수)는 인스턴스를 생성하지 않아도 사용할 수 있다. 3. 클래스메서드(static메서드)는 인스턴스변수를 사용할 수 없다. 4. 메서드 내에서 인스턴스변수를 사용하지 않는다면, static을 붙이는 것을 고려한다. package Exercise; class MyMath2{ long a, b; .. 더보기