오늘은 Chapter 11 인터페이스와 추상클래스부터 Chapter 13 String 까지 공부했다. 내일이나 모레 즈음엔 책 한 권을 다 볼 수 있을 것 같다.
- 인터페이스와 추상클래스
- 예외 처리
- String
인터페이스는 추상 메서드로 이루어져있어야하며 추상 메서드는 abstract 예약어를 사용해 생성한다. 인터페이스를 구현하는 클래스의 선언시 사용하는 예약어는 implements 이다.
public interface List {
public void add();
public void update(int index, Object value);
public void remove(int index);
public Object select(int index);
}
추상 클래스는 메서드의 일부만 완성되어 있는 클래스이다.
final 예약어의 경우 클래스에 사용하면 extends 가 불가능하고 메서드에 사용 시 overriding 이 불가능하다. 변수에 사용할 경우 값 변경이 불가능하다.
계산 수행 클래스를 예외 처리하는 문제를 풀어보았다. throws 는 책임을 전가하고 throw 는 예외를 발생시킨다는 것을 기억하자
public class Calculator {
public static void main(String[] args) {
Calculator calc = new Calculator();
try {
calc.printDivide(1, 2);
calc.printDivide(1, 0);
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
public void printDivide(double d1, double d2) throws Exception {
if (d2 == 0) throw new Exception("Second value can't be Zero");
double result = d1/d2;
System.out.println(result);
}
}
String 클래스는 매우 중요하므로 제공하는 메서드들도 잘 기억하고 있도록 하자
public class UseStringMethods {
String str = "The String class represents character strings.";
public static void main(String[] args) {
UseStringMethods use = new UseStringMethods();
// split() 메서드 사용하기
use.printWords(use.str);
// str 중에서 findStr 로 넘겨준 값과 동일한 단어의 첫 번째 위치 출력
use.findString(use.str, "string");
// str 중 findStr 로 넘겨준 값과 대소문자 구분 없이 동일한 단어의 첫 번째 위치 출력
use.findAnyCaseString(use.str, "string");
// str 에서 c 와 동일한 char 의 개수 출력
use.countChar(use.str, 's');
// str 문자열에서 findStr 이 포함된 단어를 출력
use.printContainWords(use.str, "ss");
}
public void printWords(String str) {
String[] splitString = str.split(" ");
for (String tempStr : splitString) {
System.out.println(tempStr);
}
}
public void findString(String str, String findStr) {
System.out.println("string is appeared at " + str.indexOf(findStr));
}
public void findAnyCaseString(String str, String findStr) {
System.out.println("string is appeared at " + str.toLowerCase().indexOf(findStr));
}
public void countChar(String str, char c) {
char charArr[] = str.toCharArray();
int cnt = 0;
for (int i=0; i<charArr.length; i++) {
if (charArr[i] == c) cnt ++;
}
System.out.println("char '" + c + "' count is " + cnt);
}
public void printContainWords(String str, String findStr) {
String[] strArr = str.split(" ");
for (int i=0; i<strArr.length; i++) {
if (strArr[i].contains(findStr)) {
System.out.println(strArr[i] + " contains " + findStr);
}
}
}
}