[Java] 내부 클래스(Inner Class)
·
Language/Java
들어가기 전에.. 내부 클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다 내부 클래스는 사용 빈도가 높지 않으므로 내부 클래스의 기본 원리와 특징을 이해하는 정도까지만 학습해도 충분하다 내부 클래스란? 클래스 내에 선언된 클래스 클래스 안에 다른 클래스를 선언하는 이유는 두 클래스의 관계가 긴밀하기 때문 내부 클래스를 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근 할 수 있고 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다(캡슐화)는 장점이 있다 class A { ... class B { //내부 클래스 } ... } 이 때, 내부 클래스인 B는 클래스 A를 제외하고는 다른 클래스에서 잘 사용되지 않는 것이어야 한다 내부클래스의 종류와 특징 인스턴스 클..
[Java] 인터페이스
·
Language/Java
인터페이스란 일종의 추상클래스 추상클래스처럼 추상메서드를 갖지만 일반 메서드 또는 멤버변수를 가질 수 없다 오직 추상메서드와 상수만을 가질 수 있음 그 자체만으로 사용되기 보단 다른 클래스를 작성하는데 도움을 주는 목정으로 작성 인터페이스 작성 키워드로 class 대신 interface를 사용함 또한 interface에서도 클래스와 같이 접근제어자로 public 또는 default를 사용할 수 있다 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } 일반적인 클래스의 멤버들과 달리 인터페이스 멤버에는 다음과 같은 제약사항이 있다 모든 멤버변수는 public static final 이어야 하며, 이를 생략..
[Java] 객체지향 프로그래밍 - 다형성과 추상클래스
·
Language/Java
다형성(polymorphism) 다형성이란 객체지향에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함 즉, 자식 클래스의 인스턴스를 부모 타입의 참조변수로 참조하는 것이 가능 Class Tv { boolean poser;//전원상태(on/off) int channel;//채널 void power() { power = !power; } void channelUp() { power = !power; } void channelDown() { power = !power; } } Class CaptionTV extends Tv { String text;//캡션을 보여주기 위한 문자열 void caption() { //...내용..
[Java] 객체지향 프로그래밍 - 제어자
·
Language/Java
제어자 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자 public protected default private 그 외 static final abstract native, transient, synchronized, volatile, strictfp 클래스나 멤버변수와 메서드에 주로 사용되며, 여러 제어자를 조합하여 사용하는 것이 가능 단, 한번에 네 가지 중 하나만 선택해서 사용가능 즉, 하나의 대상에 대해서 public과 private을 함께 사용할 수 없다 static - 클래스의, 공통적인 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static 멤버 변수)는 인스턴스에 관계없이 같은 값을 갖는다 ..
[Java] 객체지향 프로그래밍 - package와 import
·
Language/Java
패키지 패키지란 클래스의 묶음이다 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능 자신만의 패키지 체계를 유지함으로써 다른 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다 클래스의 실제 이름에는 패키지명이 포함되어있다 ex) String 클래서의 실제 이름은 java.lang.String - java.lang 패키지에 속한 클래스라는 의미 클래스가 물리적으로 하나의 클래스파일(.clas) 인 것과 같이 패키지는 물리적으로 하나의 디렉토리 즉 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스 파일(.class)이어야 ..
[Java] 객체지향 프로그래밍 - 오버라이딩(overriding)
·
Language/Java
오버라이딩이란? 부모 클래스로부터 상속받은 메서드의 내용을 변경하는 것 상속받은 메서드를 그대로 사용하기도 하지만, 자신에 맞게 변경해야하는 경우 오버라이딩 한다 class Point { int x; int y; string getLocatin(){ return "x :" + x + "y :" + y; } } class Point3D extends Point { int z; string getLocatin(){ return "x :" + x + "y :" + y + "z :" + z; } } 오버라이딩의 조건 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 부모와 완전히 일치해야 한다 이름이 같아야 함 매개변수가 같아야 함 반환 타입이 같아야 함 다만 접근 제어자와 예외는 제한된 ..
[Java] 객체 지향 프로그래밍 - 상속
·
Language/Java
상속 1. 상속의 정의와 장점 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성 할 수 있음 코드를 공통적으로 관리할 수 있음 코드의 추가 및 변경이 용이함 코드의 재사용성을 높이고, 중복을 제거하여 생산성과 유지보수에 기여 상속은 구현하는 방법 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써주면 됨 class child extentd Parent { //... } 상속해주는 클래스는 '부모' 상속 받는 클래스를 '자식' 이라고 함 자식 클래스의 코드가 수정되어도 부모 클래스는 아무런 영향도 받지 않지만, 부모 클래스의 코드가 수정되면 자식 클래스는 자동적..
[Java] JsonArry 형태의 문자열을 List<VO>객체로 변환하기
·
Language/Java
1. ajax 에서 컨트롤러로 JsonArry 보내기 projectInfo = new Array(); for(var i=0; i < day; i++){ projectInfo.push({ "userId": 'test01', "workDate": (year+month+(i+1)), "activityCode": datagrid1.getCellData(2,6), "activityDetailCode": (datagrid1.getCellData(2,7)), "compProjectCode": value[0].data.compProjectCode, "workMonth": month, "workYear": year, "manHour": datagrid2.getCellData(2,i), "isConfirmed": 0 })..
[Java] Optional이란?
·
Language/Java
개발을 할 때 가장 많이 발생하는 예외 중 하나가 바로 NullPointerExeption이다 이 NPE를 피하려면 null 여부를 검사해야하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거롭다 그래서 Java 8 버전부터 등장한 것이 Optional 클래스이다 Optional은 null 값이 올 수도 있는 값을 감싸는 Wrapper 클래스로 참조하더라도 NullPointerExeption이 발생하지 않도록 도와준다 자바 공식 문서에는 다음과 같이 Optional을 만든 의도가 적혀있다 메소드가 반환할 결과 값이 '없음'을 명백하게 표현할 필요가 있고 null을 반환하면 에러가 발생할 가능성이 높은 상황에서 메소드 반환 타입으로 Optional을 사용하자는 것이 Optional을 ..