손정아
JAVA
인터페이스의 역할
인터페이스의 2가지 의미
예외처리
멋사 중간테스트
문제1
문제3
Tomcat
세팅
김치훈
JAVA
인터페이스란?
인터페이스의 2가지 의미
예외 처리
getter, setter
멋사 중간테스트
문제 1
문제 2
문제 3
문제 4
이승훈
JAVA
•
클래스 다중 상속의 장점과 단점은?
◦
장점 : 객체에 다형성을 원하는 만큼 부여할 수 있다.
◦
단점 : 하나의 자식 클래스에 2명 이상의 부모 클래스에서 똑같의 형태의 메서드를 2개 이상을 물려받을 수 있다. 이때 자식 클래스에서 해당 메서드를 오버라이드를 하지 않는다면, 모호함이 발생한다. 참고로 자식 클래스에서 해당 메서드를 오버라이드 해야할 의무는 없다.
소스 코드
•
자바에서 클래스 다중 상속을 막은 이유는?
◦
C++과 달리, 자바는 개발자가 고생할 수 있는 여지를 줄이기 위해서, 해당 기능을 없앴다.
•
클래스 다중 상속에서 나타날 수 있는 문제점을 해결하는 방법은?
◦
자식 클래스에서 모호한 메서드를 오버라이드 한다.
•
인터페이스와 클래스의 차이점은?
◦
인터페이스는 100% 추상 클래스 이다.
◦
인터페이스 안에 있는 메서드는 어차피 추상메서드 이기 때문에, abstract 키워드를 메서드 앞에 붙일 필요가 없다.
•
자바에서 인터페이스 다중상속을 허용한 이유는?
◦
객체지향 프로그래밍에서 다형성은 굉장히 중요하다.
◦
자바에서는 다중 상속이 막혀있어서, 자유로운 다형성 부여가 힘든 상황이다.
◦
그래서 자바는 인터페이스라는 제한된 형태의 클래스는 다중 상속을 허용했다.
◦
인터페이스를 다중상속 해서, 모호함이 발생해도, 자식 클래스에서 해당 메서드를 오버라이드 해야하는게 필수 이기 때문에, 모호함이 존재할 수 없는 구조이다.
예외 처리
getter, setter
중간 테스트
최태승
Java
시험문제코드
tomCat
권종석
문제 1(단순 구현)
package hello;
public class HelloJava {
public static void main(String[] args) {
long answer = 0;
for(int i=0; i<100000 ; i++) {
if(i%3==0 && i%5==0) {
answer+=i;
}
else {
if(i%3==0) {
answer+=i;
}
else if(i%5==0) {
answer+=i;
}
}
}
System.out.println(answer);
}
}
JavaScript
복사
문제 2 (ArrayList 사용)
package hello;
import java.util.*;
import java.io.*;
public class HelloJava {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<Integer>();
long answer = 0;
ar.add(0);
ar.add(1);
for(int i = 2 ; i<=50000000;i++) {
ar.add(ar.get(i-2)+ar.get(i-1));
if(ar.get(i)%2==0) {
answer+=ar.get(i);
}
}
System.out.println(answer);
}
}
JavaScript
복사
문제 3 (소인수 구하는 알고리즘)
package hello;
import java.util.*;
import java.io.*;
public class HelloJava {
public static void main(String[] args) {
long num = 1600851475143L;
int max = 0;
int i=2;
while(num>=2) {
if(num%i==0) {
max = Math.max(max, i);
num/=i;
}
else {
i+=1;
}
}
System.out.println(max);
}
}
JavaScript
복사
문제 4(Brute Force로 풀었는데 여기서 조금 더 효율적으로 짜야할거 같아요. 실제 코테였으면 시간초과 나왔을거같아요. 일단 넣어놓을게요!)
package hello;
import java.util.*;
import java.io.*;
public class HelloJava {
static long max = 0L;
public static void main(String[] args) {
long num = 0L;
long var = 0L;
long result = 0L;
for(int i=1000; i<10000;i++) {
for(int j=1000;j<10000;j++) {
num = i*j;
var = toStr(num);
if(var%2==1) { //홀수개 길이
result = odd(num);
}
else { //짝수개 길이
result = even(num);
}
}
}
System.out.println(result);
}
static public long toStr(long a) {
String value = Long.toString(a);
long num = 0L;
num = value.length();
return num;
}
static public long even(long a) {
String sen = "";
sen = Long.toString(a);
int num =0 ;
String[] arr;
long mmax = 0L;
arr = sen.split("");
for(int i =0; i<sen.length()/2 ;i++) {
if(Integer.parseInt(arr[i])==Integer.parseInt(arr[sen.length()-i-1])) {
num++;
}
}
if(num==sen.length()/2) {
mmax=a;
max = Math.max(mmax, max);
}
return max;
}
static public long odd(long a) {
String sen = "";
sen = Long.toString(a);
int num =0 ;
String[] arr;
long mmax = 0L;
arr = sen.split("");
for(int i =0; i<sen.length()/2-1 ;i++) {
if(Integer.parseInt(arr[i])==Integer.parseInt(arr[sen.length()-i-1])) {
num++;
}
}
if(num==sen.length()/2) {
mmax = a;
max = Math.max(mmax, max);
}
return max;
}
}
JavaScript
복사
JAVA
자바에서 인터페이스의 역할
인터페이스는 객체에 다형성 부여
•
홍길동은 사람은 동물이고, 동물은 생물
•
홍길동은 그와 동시에 변호사이자, 음식싱겁게먹기모임에 일원
•
if문 개수를 줄여줌
규약을 정의하는데 용이함, 결국에 결합성을 낮춰줌
•
자동차가 특정 타이어와 규약없이 묶여있다면, 다른 타이어로 교체하기 힘들다. 다만 자동차가 특정 타이어를 모르고 타이어 규약만을 상대한다면 자동차에 표준규격을 따르는 모든 타이어를 교체해서 쓸 수 있음
•
호환성이 확보되어 상황에 따른 유연한 대처가 가능
인터페이스 2가지 의미 구분
자바
•
인터페이스 ⇒ 클래스와 대비되는 인터페이스
객체지향 , 패턴 책
•
인터페이스 ⇒ 상위타입 (추상, 인터페이스)