목록til/Java (27)
min's devlog
메소드 오버라이딩(method overriding) - 상속받은 부모 클래스의 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 재정의하는 것 * 헷갈릴 수 있으나 전혀 다른 개념 메소드 오버로딩은 서로 다른 시그니처를 갖는 여러 메소드를 하나의 이름으로 정의하는 것 조건 - 메소드의 동작만을 재정의하기 때문에 메소드의 선언부는 같다. - 부모 클래스의 메소드보다 더 좁은 범위의 접근 제어자로 변경은 불가능 - 부모 클래스의 메소드보다 더 큰 범위의 예외는 선언할 수 없음 class Parent { void display() { System.out.println("부모 클래스의 display() 메소드"); } } class Child extends Parent { void display() { S..
상속(inheritance) - 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 - 캡슐화, 추상화와 더불어 객체 지향 프로그래밍(OOP)을 구성하는 중요한 특징 중 하나 - 상속을 이용하면 기존 클래스의 필드와 메소드를 물려받아 새로운 클래스를 생성할 수 있다. - 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class)라고 한다. - 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class)라고 한다. 상속의 장점 기존에 작성된 클래스 재활용 > 코드 중복을 막을 수 있다. 클래스 간의 계층적 관계를 구성해 다형성의 문법적 토대를 마련한다. 자식 클래스 - 자식 클래스는 부..
패키지(Package) - 클래스와 인터페이스의 집합을 의미 - 물리적 의미 : 하나의 디렉터리 - 하나의 패키지에 속한 클래스나 인터페이스는 모두 해당 패키지 이름의 디렉터리에 포함되어 있다. - 서로 관련이 있는 클래스나 인터페이스를 함께 묶어 파일을 효율적으로 관리할 수 있기 위함 - 협업 시 발생할 수 있는 이름 충돌 문제도 피할 수 있다. import import 패키지이름.클래스이름; import 패키지이름.*; - 자바 컴파일러에 코드에서 사용할 클래스의 패키지에 대한 정보를 미리 제공 - 다른 패키지에 속한 클래스 이름만으로 사용 어떤 패키지에 속한 클래스를 다른 클래스에서 이용할 경우 코드 최상단에 패키지의 경로를 포함한 풀 네임을 명시해야한다. 하지만 비효율적인 방법! import를 사..
public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.print("입력: "); String str=s.nextLine(); for(int i=str.length()-1; i>=0; i--) { System.out.printf("%c",str.charAt(i)); } } 입력된 문자열을 받기 위해 String 타입 변수 str 선언 문자열의 뒤에서부터 출력하기 위해 for문의 시작점은 입력한 문자의 가장 마지막 글자 - .length() 는 입력된 문자열의 길이를 구하는 메소드 - .charAt(i) 는 입력된 문자열의 i번째 문자를 구하는 메소드 자바에서는 문자열이 입력되면 0번째 부터 시작한다. 예를 ..
요구사항 : 아이디 입력 > 올바른 아이디 검사 System.out.print("아이디: "); String id = reader.readLine(); for (int i=0; i 'z') { //영소문자가 아닌지?? System.out.println("잘못된 문자가 발견되었습니다."); break; } } 영소문자가 맞는지를 묻는 것 보다 영소문자가 아닌지를 먼저 찾는 것이 더 쉽다! 요구사항 : 회원 가입 할 때 이름 입력 > 길이(2~5자) + 한글만 가능 프로젝트 할 때 많이 쓰는 유효성 검사 System.out.print("이름: "); String name = reader.readLine(); if (isValid(name)) { System.out.println("올바른 이름"); } els..