본문 바로가기

Backend/Java

(75)
[Java] 오버라이딩 vs 오버로딩 오버라이딩과 오버로딩은 자바에서 다형성을 이루는 방법들이다. 다형성이란 같은 이름의 메서드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것을 말한다. 필드 오버라이딩이라는 용어는 없다. 메서드 오버라이딩을 간단히 오버라이딩이라고 부른다. 오버라이딩 - 슈퍼 클래스에 구현된 메서드를 서브 클래스에서 동일한 이름으로 자신의 특성에 맞게 다시 구현하는 것이다. - 슈퍼 클래스의 메서드를 이름, 매개변수 타입과 개수, 리턴 타입을 모두 동일하게 서브 클래스에 재작성하는 것이다. - 슈퍼 클래스와 서브 클래스의 메서드 사이에 발생하는 관계이다. - 메서드 오버라이딩이 일어나면 서브 클래스에서 슈퍼 클래스의 메서드를 무시하며 이런 처리를 동적 바인딩이라고 한다. - 동적 바인딩은 실행할 메서드를 컴파일 시..
[Java] 슈퍼 클래스 생성자, 캐스팅, 업캐스팅, 다운캐스팅 슈퍼 클래스 생성자super(): 서브 클래스에서 명시적으로 슈퍼 클래스의 생성자 선택 호출- super(parameter);- 인자를 이용하여 슈퍼 클래스의 적당한 생성자 호출- 반드시 서브 클래스 생성자 코드의 제일 첫 라인에 와야 함 캐스팅: 변수가 원하는 정보를 다 갖고 있는 것int a = 0.1; // 에러 발생 xint b = (int) true; // 에러 발생 o, boolean은 int로 캐스트 불가캐스팅이 필요한 이유1) 다형성: 오버라이딩 된 함수를 분리해서 활용할 수 있다.2) 상속: 캐스팅을 통해 범용적인 프로그래밍이 가능하다.  업캐스팅: 묵시적 형변환, 캐스팅이 자동으로 발생서브 클래스가 슈퍼 클래스로 변환되는 것업캐스팅은 클래스 명 생략 가능Parent p = new Chi..
[Java] 메소드 매개변수와 리턴 값이 있는 경우리턴타입 메소드명 (자료형 매개변수){    실행할 문장    return 리턴값;} 리턴 값이 없는 경우void 메소드명 (자료형 매개변수){    실행할 문장} 리턴값과 매개변수가 둘 다 없는 경우void 메소드명 (){    실행할 문장}
[Java] 접근 제한자 public- 모든 접근을 허용- 어떠한 클래스가 접근하더라도 모두 허용- 다른 패키지에서도 접근 가능 protected- 상속받은 클래스 또는 같은 패키지에서 접근 가능- 해당 클래스를 상속하는 자식 클래에서 접근 가능- 같은 패키지 내부에 있는 클래스, 하위 클래스(상속받은 경우)에서 접근 가능 default- 기본 제한자- 자신 클래스 내부와 같은 패키지 내에서만 접근 가능- 접근 제한자를 명시하지 않음 private- 외부에서 접근 불가- 같은 클래스 내에서만 접근 가능  접근범위동일클래스동일패키지다른패키지의 동일 클래스다른패키지적용 대상접근 가능 대상접근 불가 대상public접근제한없음OOOO클래스, 필드, 생성자, 메소드모든 대상없음protected동일패키지와 상속받은 클래스 내부OOOX필드,..
[예제] 5개의 정수를 입력받아 합계와 평균을 출력 (for each 사용) // 5개의 정수를 입력받아 입력받은 수의 합계와 평균을 출력 (for each 사용) package aahh; import java.util.ArrayList; import java.util.Scanner; public class AH28 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int i = 0; int sum = 0; double avg = 0; ArrayList list = new ArrayList(); System.out.println("5개의 정수를 입력하시오."); while(i < 5) { list.add(s.nextInt()); i++; } for(Integer nums: list) { s..
[예제] 짝수 홀수 판별기 // -1을 입력받으면 프로그램 종료, 0을 입력받으면 0임을 출력하는 짝수 홀수 판별기 package aahh; import java.util.Scanner; public class AH24{ public static void main(String[] args) { while(true) { System.out.print("숫자를 입력하시오: "); Scanner s = new Scanner(System.in); int num = s.nextInt(); if(num == -1) { System.out.println("프로그램을 종료합니다."); break; } if(num % 2 == 0) { if(num == 0) { System.out.println("0입니다. 짝수입니다.\n"); continue;..
[예제] 두 개의 정수를 입력받아 사칙연산 수행하기 // 두개의 정수를 입력받아 사칙연산을 수행한다. // sum, sub, mul, div, quo 메서드 활용하기 package aahh; import java.util.Scanner; public class AH24{ public static int sum(int x, int y) { return x + y; } public static int sub(int x, int y) { return x - y; } public static int mul(int x, int y) { return x * y; } public static int div(int x, int y) { return x / y; } public static int quo(int x, int y) { return x % y; } publi..
[예제] A와 B의 값 입력받아 더하는 메서드 활용