Java 상속, throw vs throws, Class.forName()

Jiwontwopunch·2022년 1월 17일
0

TIL

목록 보기
33/92
post-thumbnail

상속 accessTest

// 상속 : 부모의 기능을 상속받아 확장해나간다.

class Saram {
  protected String name;
}
class 학생 extends Saram {
  private String schoolName;
  public 학생(String schoolName, String name){
    this.name = name;
    this.schoolName = schoolName;
  }
}
public class accessTest {
  public static void main(String[] args){
    학생 obj = new 학생("영도중학교", "김기준");
  }
}

this

class Sample2 {
  int a;   // 객체마다 소유한다 > this로 객체를 구별한다.
  static int b;  // 객체들이 공유한다 > this가 존재하지 않는다.
  static {
    System.out.printIn("정적 초기화 영역");
    b = 20;
    System.out.printIn(b);
  }
Sample2(){
  System.out.printIn("생성자");
}
}
public class forNameTest2 {
   public static void main(String[] args) thorws ClassNotFoundException{
     // 프로그램을 실행하려면 저장된 프로그램을 읽어온 다음 인스턴스를 생성
     // Sample2.java 파일을 자바가 번역하면 Sample2.class 파일이 만들어진다.
     // Sample2의 객체를 생성하면 Sample1.class를 읽어와서 객체찍어내기
     // Class.forName으로 클래스를 읽어올 수 있다.
     Class clz = Class.forName("com.icia.example5.Sample2");
   }
}

throw vs throws

  • throw : 메소드 내에서 상위 블록으로 예외를 던짐 + 억지로 예외 발생을 시킬때도 사용
  • throws : 현재 메소드에서 상위 메소드로 예외를 던짐

Class.forName()

Class 클래스는 클래스들의 정보(클래스의 필드, 메서드, 클래스의 종류(인터페이스 등))를 담는 메타 클래스이고 JVM은 이 Class 클래스를 통해 클래스들에 대한 정보를 로드한다.

로드되어 있지 않다면 ClassLoader 클래스 혹은 그를 상속받은 클래스들을 이용하여 A 클래스를 로드하려고 할 겁니다. 만약 찾지 못하면 ClassNotFoundException이 발생하게 되는 것

0개의 댓글