[Java] 예외처리(Exception handling)
·
Java
1. try ~ catch- 하나의 try에 여러개의 catch 가능- catch에 밑으로 가면서 더 넓은 부모타입을 선언- try의 {} catch의 {} 에 선언된 지역변수try { 예외가 발생할 수 있는 구문들 작성}catch(발생한 예외 객체 타입 선언){ 예외처리 구문}catch(발생한 예외 객체 타입 선언){ 예외처리 구문}catch(발생한 예외 객체 타입 선언){ 예외처리 구문}finally { 예외가 발생하든 안하든 무조건 실행 하는 영역} 2. Throws- 예외처리를 자기가 하는 것이 아니라 메서드를 호출한 쪽으로 위임 메서드 선언부 () throws 예외객체타입명1, 예외객체타입명2, ... {} -사용자 정의 예외 클래스1. 예외 클래스 선언- 예외 클래스 선언하고 Exception..
[Java] 인터페이스(interface), 상속, 구현
·
Java
인터페이스(interface):추상 메서드 집합(프로그래밍 관점)- 오직 추상 메서드와 상수만을 멤버로 가짐. (iv,cv 변수 x)-껍데기인 설계도- 모든 멤버가 publicinterface 인터페이스명 { (public) (static) (final) 타입 상수명 = 값; //상수 (public) (abstract) 메서드명 (매개변수들); //추상 메서드}-인터페이스 모든 멤버변수 public static final이므로 생략가능-인터페이스 모든 멤버메서드 public abstract이므로 생략가능단, static,디폴트 메서드는 예외 인터페이스 상속- 인터페이스는 인터페이스로부터만 상속 받을 수 있음.- Object클래스가 최고조상x, 인터페이스 조상은 인터페이스- 다중상속 가능(조상..
[Java] 추상 클래스, 추상 메서드(abstract)
·
Java
추상 클래스(abstract class): 미완성 메서드(추상 메서드)를 포함한 클래스 (미완성 설계도)- 추상메서드가 있기때문애 상속통해 구현 해주어야 한다.- 다른 클래스 작성에 두움주기 위한것으로 인스턴스 생성 불가    -> 상속 통해 추상메서드 구현 후 인스턴스 생성 가능abstract class 클래스이름{ } 추상 메서드(abstract method): 선언부만 작성하고 구현부는 작성하지않은 메서드 (미완성 메서드)- 꼭 필요하지만 자손마다 다르게 구현될 경우 씀.abstract 리턴타입 메소드이름();  abstract class AbstTest{ abstract void method1(); abstract void method2(); //객체생성불가}class Test extends A..
[Java] 매개변수의 다형성
·
Java
class Clothes { int price; Clothes(int price){ this.price = price; }}class Shirt extends Clothes{ Shirt(){ super(8000); //조상 생성자 호출 }}class Pants extends Clothes{ Pants(){ super(12000); }}class Buyer { long money = 20000; -------- void buy(Shirt s){ money = money - s.price; } void buy(Pants p){ money = money - p.price; } -------- //제품 추가마다 메서드 만들어 줘야..
[Java] 다형성(Polymophism), 참조변수 형변환, instanceof연산자
·
Java
다형성 (Polymophism): 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스 참조,다룰수 있도록 한 것public class Parent { int x = 10; public void parentMethod(){ ... }}public class Child extends Parent{ int y = 20; public void childMethod(){ ... }}//원래 참조변수타입 = 객체타입 이지만Parent p = new Parent();Parent p = new Child(); //조상타입 참조변수로 자손인스턴스 참조//다만, 조상참조변수는 자손인스턴스 중 상속받은 조상 멤버만 사용가능p.childMethod(); //에러p.p..
[Java] 제어자, 지정자(modifier), 캡슐화
·
Java
제어자, 지정자 :클래스, 클래스멤버(변수,메서드선언부)에 사용되어 부가적 의미 부여함. 접근 지정자 : public, protected, (default), private //넷 중 하나만 선택가능 그외 지정자 : static, final, abstract, native, transient, synchronized, volatile, strictfp //복수선택 가능 접근지정자(Access Modifier) :사용(접근) 권한 지정 - 기준 : 패키지, 클래스 - 선언 : 클래스, 멤버변수, 멤버메서드, 생성자 4가지 중에서 한개만 선언 가능(중복 선언 불가) 1. public - 제한x, 어디에서든 사용 가능 2. protected - 같은 패키지 내에서만 사용 가능 - 단, 상속 관계에서는 다른 패..
[Java] Object 클래스, super, super()
·
Java
Object 클래스 :모든 클래스의 조상 - 부모 없는 클래스 자동적 Object 클래스 상속받음 - 모든 클래스는 Object 클래스에 정의된 11개의 메서드(toString(),equals()..등등) 상속받음. class Test{ //→ class Test extends Object 컴파일러 자동추가 } super :객체 자신을 가르키는 참조변수 (≒ this) - 조상멤버와 자신멤버 구별할 때 사용 - 인스턴스 멤버내에만 존재 public class Parent { int x = 10; } public class Child extends Parent{ int x = 20; public void play(){ System.out.println(x); //20 ,가까운 쪽 System.out.pri..
[Java] 오버라이딩(OverRiding)
·
Java
오버라이딩(OverRiding) : 상속 받은 부모의 메서드를 자기 자신에 맞게 내용을 재정의,변경 하는 것. public class Parent { int x = 10; int y = 20; public void play(){ retunr x+ ":" +y; } } public class Child extends Parent{ int z = 30; public void play(){ //오버라이딩 {}구현부만 수정가능 retunr x+ ":" +y+ ":" +z; } } 오버라이딩 조건 1. 선언부(반환타입, 메서드이름, 매개변수) 조상메서드와 일치 2. 접근제어자 조상클래스 메서드보다 좁은 범위로 변경x 3. 예외는 조상클래스의 매서드보다 많이 선언할 수 x 접근제어자,예외 나중자세히.. 오버로딩 v..
[Java] 상속(Inheritance), 포함(composite)
·
Java
상속 : 기존 클래스에서 새 클래스 작성(코드 재작용성) - 두클래스 부모,자식 관계 맺음 부모로 부터 자식에게 상속 - 부모클래스(super class)의 멤버들을 자식클래스(child class)에서 자기가 선언한 것 처럼 사용하려 하는것 - 클래스간의 공통요소(멤버)가 있다면 공통요소를 부모클래스로 작성 후 자식 클래스가 상속(확장) 해서 사용 - java는 단일 상속만 허용 (충돌방지) - 자손은 조상의 모든 멤버 상속받음(생성자,초기화 블럭 제외) - 자손 멤버 수 ≥ 조상 멤버 수 → 조상보다 적을 수x - 자손 변경 조상 영향x class 자식클래스 extends 부모클래스{ } public class Parent { //멤버수 :2 [x, play()] int x = 10; public v..
[Java] 변수 초기화(명시적, 생성자, 초기화블럭)
·
Java
*멤버변수(iv,cv) 자동 기본값 초기화 but 지역변수 반드시 사용 전 초기화 필수! 왜? 메서드는 그 영역 쓰고 말기 때문에 쓸때마다 덮어쓰는 방식이라 전에 뭐들었는지 몰라서.. *변수타입별 기본값 boolean - false 정수형 - 0 실수형 - 0.0 참조형 - null 1. 명시적 초기화 : = 대입연산자, 간단 초기화 int x = 10; //기본형 초기화 Test t = new Test(); //참조형 초기화 2. 초기화 블럭 class Test{ static{ 클래스 초기화 블럭 } //cv초기화, 클래스 메모리 처음 로딩될 때 한 번만 수행 { 인스턴스 초기화 블럭 } //iv초기화, 인스턴스 생성할 때 마다 수행 } 3. 생성자 https://bbbpp.tistory.com/73 ..