분류 전체보기
인터페이스 Interface
다른 클래스를 작성할 때 기본이 되는 틀을 제공한다. 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세(specification) 추상메서드와 상수로만 이루어져있다. 자바8에 새롭게 추가된 디폴트 메서드와 정적메서드 구현부()implementation part)가 없다면 그냥 껍데기이다. default라는 예약어를 적지 않으면 다 추상메소드로 인식한다. 인터페이스를 이용한 다중상속을 가능하게 한다. 함수 구현을 강제하여 구현객체에 같은 동작을 강제한다. 추상클래스 = 미완성 설계도 인터페이스 = 기본 규격 설계도 interface Food { int price = 30000;//상수 void eat();//추상메서드 } class Pizza implements Food { public v..
버블정렬
* 버블정렬 * 3 2 1 6 5 * 2 3 1 6 5 * 2 1 3 6 5 * 2 1 3 5 6 -> 1회전 * ----------------------- * 1 2 3 5 6 -> 2회전 public class BubbleSort { //버블정렬 public static void main(String[] args) { int ary[] = {3, 2, 1, 6, 5}; int temp;//빈공간 int size = ary.length;//5 //두개값 교환코드 1. //for(int i=0; i2 //temp = ary[j+1];//temp=3 //ary[j+1] = ary[j];//ary[i]=2 //ary[j] = temp;//ary[j]=3 //} //} //} //두개값 교환코드 2. for(..
직렬화
class Stu implements Serializable{ private static final long serialVersionUID = -1503252402544036183L; //버전 관리를 외한 정보 private String name; private String id; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getAge() { return age; } public ..
예외처리
try-catch문에서의 흐름 try블럭 내에서 예외가 발생한 경우 1. 발생한 예외와 일치하는 catch블럭이 있는지 확인한다. 2. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문장들을 수행하고 전체 try-catch 문을 빠져나가서 그 다음 문장을 계속해서 수행한다. 만약 일치하는 catch블럭을 찾지 못하면, 예외는 처리되지 못한다. 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 2. 키워드 throw를 이용해서 예외를 발생시킨다. 메서드에 예외 선언하기 void method() throws Exception1, Exception2, ... ExceptionN { // 메서드 내용 } → 자신(예외가 발생할 가능성이 있는 메서드)을 호출..
추상클래스, 추상메서드 - abstract
미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스 - abstract class → 상속을 통해서 자손클래스에 의해서만 완성된다. 1. 추상 메서드를 최소 한개 이상 가지고 abstract 로 선언된 클래스 2. 추상 메서드가 없어도 abstract 로 선언된 클래스 → 추상메서드를 포함한 것 이외에는 일반 클래스와 동일하다. 추상메소드 - abstract method 선언부만 작성하고 구현부는 작성하지 않은것. → 메서드의 내용이 상속받은 클래스에 따라 달라질 수 있기때문 → 일반 클래스 안에 들어갈 수 없고 반드시 추상 클래스 안에 있어야 한다. 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업 구체화 : 상속을 통해 클래스를 구현, 확..
instanceof 연산자
참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용, 주로 조건문에 사용된다. true 와 false 중 하나를 반환한다. 다운캐스팅을 하기 전에 상위 클래스로 형변환된 인스턴스의 원래 자료형을 확인해야 변환할 때 오류를 막을 수 있다. class Person {} class Student3 extends Person{} class Entertainer extends Person{} class Singer extends Entertainer{} public class InherEx7Instanceof { static void pr(Person p) { if(p instanceof Person) { System.out.println("사람"); } if(p instanceof Student..
다형성 (polymorphism)
다형성 : 여러 가지 형태를 가질 수 있는 능력 - 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하여 구현. → 부모클래스 타입의 참조변수로 자식클래스의 인스턴스를 참조할 수 있도록 한다. 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 한다. → 자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 존재하지 않는 멤버를 사용하고자 할 가능성이 있으므로 허용하지 않는다. 참조변수의 형변환 자손타입 → 조상타입 (Up-casting) : 형변환 생략가능 조상타입 → 자손타입 (Down-casting) : 형변환 생략불가 → 형변환은 참조변수의 타입을 변환하는 것으로 인스턴스에 아무런 영향을 미치지 않는다. 단지, 참조하고 있는 인스턴스에서 사용할 수 있는 ..
객체배열
객체 배열 : 객체에 대한 레퍼런스를 원소로 갖는 배열 Book b[]; // Book 배열에 대한 레퍼런스 변수 b 선언 b = new Book[5]; //레퍼런스 배열 생성 값을 입력받아 객체배열에 담아 출력하기 class Song { String singer; String title; Song(String singer, String title){ this.singer = singer; this.title = title; } } public class Array05 { public static void main(String[] args) { Scanner s = new Scanner(System.in); Song so[] = new Song[2];//객체배열 생성 //가수랑 제목 입력받기 for (i..