- 생성자 생성자는 클래스의 객체를 생성하고 객체를 초기화하는 데 사용된다. 생성자는 여러 가지 특징이 있다. 1. 값을 반환하지 않는다. 2. 생성자의 이름은 클래스의 이름과 같다. 3. 생성자를 코딩하지 않으면 디폴트 생성자가 컴파일러가 자동으로 생성한다. * 디폴트 생성자란 파라미터가 아무것도 없는 생성자를 뜻한다. 4. 개발자가 명시적으로 생성자를 생성하면 컴파일러는 디폴트 생성자를 생성하지 않는다. 5. 객체를 생성할 때 new 연산자를 사용해 생성자를 딱 한번 호출한다. - ex) class Test{ int i; Test() { // 디폴트 생성자 } Test(int i) { // 명시적 생성자 this.i = i; } } Test a = new Test(); // 생성자를 통한 객체 생성
- this, this(), super, super() this : 파라미터명과 객체가 가지고 있는 변수명이 같을 때 객체가 가지고있는 변수를 가르키기 위해 사용한다. - ex)class Test { int a; Test(int a){ this.a = a; // this.a는 전역변수 a를 가르킨다. }} this() : 객체가 가지고 있는 생성자를 호출한다. - ex)class Test { int a; String b; Test(int a){ this.a = a; } Test(int a, String b){ this(a); // Test(int a) {...} 생성자를 호출한다. this.b = b; }}* 주의사항 : this()는 맨위에 작성해야한다. 그리고 생성자 이외의 메소드에서는 사용할 수 없..
- 오버라이딩(Overriding) 메소드의 재정의를 뜻한다. TestA와 TestB라는 클레스가 있을 때 TestA를 TestB가 상속받고 TestA의 메소드를 TestB가 재정의 할 때 오버라이딩이라 말한다. 오버라이딩 할때에는 접근제한자, 메소드의 이름, 리턴타입 그리고 파라미터의 타입과 수가 일치해야 한다. class TestA { public int add(int a, int b){ return a + b; } } class TestB extends TestA { int c = 10; public int add(int a, int b){ return a + b + c; } } 위의 B클레스의 add메소드가 오버라이딩한 상태이다. - 오버로딩(Overloading) 이름이 같은 여러개의 메소드를 ..
- try-with-resources ( 리소스 자동 해제 ) 자바 7버전에 추가된 내용으로 close가 필요한 resource들의 close를 자동으로 해준다. try-with-resources가 없었다면 아래와 같이 finally문에서 close를 해줘야 했다. FileOutputStream fos = null; try { fos = new FileOutputStream(filePath); } catch(Exception e){ } finally { if(fos != null){ try{fos.close();}catch(Exception e){} } } 이제는 아래와 같이 close를 하지 않아도 자동으로 close를 해준다. try(FileOutputStream fos = new FileOutput..