자바 관련 부자류에 대한 이상 설명 기반

3411 단어 java종류이상
자바의 이상은 부자류와 관련된 문제로 요약할 수 있다. 자류의 구조 함수에서 던진 이상은 반드시 부류의 이상을 포함해야 한다. 자류의 방법은'범위가 부류보다 작거나'부류의 이상을 던지지 않는 것을 선택할 수 있다.
1. 왜 구조 함수는 부류를 포함하는 이상을 던져야 합니까?
'thingking in java'에서 이런 말이 있다.
이상 제한: 덮어쓸 때 기본 방법의 이상 설명에 열거된 이상만 던질 수 있습니다
이상 제한은 구조기에 작용하지 않습니다. Stormy Inning의 구조기는 어떠한 이상도 던질 수 있고 기류 구조 함수가 던지는 이상은 상관할 필요가 없습니다.그러나 필수 구조 함수는 반드시 이런저런 방식으로 호출되어야 하기 때문에, 하위 구조 함수의 이상 설명은 반드시 기본 구조기의 이상 설명을 포함해야 한다
이 단락은 처음에는 비교적 빙빙 돌았지만, 히히 한 번 보면 알 수 있다.
우선, 이상 설명은 덮어쓰기 방법만 대상으로 하고 구조 함수는 이 범위에 현저히 없기 때문에 하위 구조 함수는 어떤 이상을 던질 수 있고 상위 구조 함수가 던지는 이상을 고려하지 않아도 된다.그러나 new의 하위 클래스 대상을 사용할 때 하위 클래스 구조 함수는 반드시 호출되기 때문에 하위 클래스 구조 함수 호출에 대응하는 하위 클래스 구조 함수가 던지는 이상은 반드시 고려해야 한다. 이때'자 클래스 구조 함수는 하위 클래스 구조 함수가 던지는 이상을 포획할 수 없기 때문에 하위 클래스 구조 함수는 반드시 이 이상을 던져야 한다.

class SomeException extends Exception{} 
 
class TheOtherException extends Exception{} 
 
class BaseC 
{ 
  public BaseC()throws SomeException{} 
   
  public BaseC(int a)throws TheOtherException{} 
} 
 
class SubC extends BaseC 
{ 
  public SubC() throws SomeException //  
  { 
    super(); // ,  SomeException 
   //super(37) ; // super() , TheOtherException 
  } 
   
}
2. 왜 하위 구조 함수는 상위 구조 함수가 던지는 이상을 포획할 수 없습니까?
하위 클래스가 부류가 던진 이상을 포착하려면 슈퍼 () 를 표시해야 하기 때문이다.아니면 슈퍼(xx...);그러나 슈퍼 ()와this () 는 모두 하나의 특성을 가지고 있다. 바로 그들을 첫 줄에 놓아야 한다는 것이다. 이것은try {}catch {}와 모순되기 때문에 포획할 수 없다
3. 자류가 계승하는 부류와 인터페이스에 같은 방법명이 존재할 때 이 처리 방식은 이상 제한을 따라야 한다.

class SomeException extends Exception{} 
 
class TheOtherException extends Exception{} 
 
interface InterF 
{ 
  public void function()throws TheOtherException; 
} 
class BaseC 
{ 
  public void function()throws SomeException{} 
} 
 
class SubC extends BaseC implements InterF 
{ 
  //  
  public void function(){} 
   
  // :Exception SomeException is not compatible with throws clause in InterF.function() 
  // public void function()throws SomeException{} ; 
  // :Exception TheOtherException is not compatible with throws clause in BaseC.function() 
  // public void function()throws TheOtherException{} ; 
}
4. 왜 하위 클래스는 기본 방법의 이상 설명에 열거된 이상만 던질 수 있습니까?
하위 클래스가 상위 클래스로 바뀔 가능성이 있기 때문에 하위 클래스가 임의로 이상을 던질 수 있도록 허락하면 상위 클래스로 바뀔 때 이 방법의 인터페이스(일단 이렇게 부르자)는 상위 클래스의 방법 유형으로 바뀔 수 있다. 이때 문제가 생기면 하위 클래스는 이상을 던질 수 있지만 상위 클래스는 이 이상을 처리할 수 없기 때문에 대상의 교체 가능형을 보증한다."기본 방법의 이상 설명에 열거된 이상만 던질 수 있습니다."라고 강제로 요구합니다.
여기서 말하는'그 이상들'은 이 이상한 자식 이상도 포함한다!
5.그건 몰라도 내가 좀 우둔한 것 같아. 내가 볼 때 한참 동안 생각해서 깨달았어. 일단 적어둬.

class SomeException extends Exception{} 
 
class BaseC 
{ 
  public void function()throws SomeException{}//  
} 
 
class SubC extends BaseC 
{<BR>// function() super.function() , ,  ! 
/* 
  public void function()throws SomeException 
  { 
    super.function(); 
  } 
*/
  public void function() 
  { 
    try
    { 
      super.function() ; 
    } 
    catch(SomeException e) 
    { 
      e.printStackTrace(); 
    } 
  } 
}
이상의 자바와 관련된 부자류에 대한 이상 상세한 설명은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기