getClass 및 classOf에서 6.3.4. 스칼라
클래스 A는 클래스 B를 확장
B = B를 새로 만들기 b.getClass == classOf [A]
B의 새로운 B = B == b.getClass classOf [B]
- 이 지정된 대상 객체 클래스 및 서브 클래스가 정확하게 판정 할 수없는 것으로 판정되는 경우에만 IsInstanceOf 객체 지정된 클래스 즉;
- 미세 지정된 클래스의 대상 객체, 다음 만 getClass 및 classOf를 사용할 수있는 것으로 판단되면,
- p.getClass 정확하게 객체 클래스를 취득 할 수 classOf [XX]을 정확하게 == 연산자는 다음의 판정을 사용하여 등급을 얻을 수있다;
- 예를 들면 :
- 스칼라는, 각 클래스는 일차 및 이차 생성자 생성자 복수 중 하나를 가질 수 있으며, 각 보조 생성자의 첫 번째 행은 생성자 또는 다른 보조 주 생성자 코드를 호출해야하며, 따라서 상기 보조 상수 생성자 서브 직접을 할 수 없다 부모 클래스의 생성자를 호출;
패키지 cn.itcast.extends_demo의 클래스 person4 {} 클래스 Student4 (가) 확장 person4 개체 Student4 { DEF 주 (인수가 : 어레이 [문자열]) { 발에 P = person4 새로운 새 Student4 예 // p는 클래스의 여부를 판단한다 person4 println 메소드 (p.isInstanceOf [person4])는 true // // 여부를 판정 person4 P 형의 형태 println 메소드 (p.getClass == classOf false로 [person4]) // // 여부는 P 형의 종류를 판정 Student4 println 메소드 (p.getClass == classOf을 [Student4])는 true // } }
6.3.5. 스칼라 부모 클래스의 생성자를 호출
- 당신은 서브 클래스의 기본 생성자에서 상위 클래스의 생성자를 호출 할 수 있습니다.
- 부모 클래스의 생성자가 같은 재사용 서브 클래스가, 변형 된 발 또는 VAR를 사용하지 않는 이름과 나이, 같은 분야에서 정의 된 경우, 그렇지 않으면 부모 클래스의 필드를 커버하는 서브 클래스를 고려하고, 특정 요구됩니다 override 키워드를 사용합니다.
- 예를 들면 :
패키지 cn.itcast.extends_demo의 클래스 Person7 ( 발에 이름 : 문자열, 발 나이 : INT) { var에 점수 : 더블 = 0.0 var에 주소 : 문자열 = "베이징" 는 def이 (이름 : 문자열, 점수 : 더블) = { // 각 보조 라인이 먼저 다른 보조 또는 주 생성자 생성자 코드의 생성자를 호출해야합니다 // 생성자의 주요 코드 다음은이 (이름, 30) 은이 . 점수 = 점수 } // 다른 보조 생성자 는 def이 (이름 : 문자열, 주소 : 문자열) = { 은이 (이름, 100.0) 은이 . 어드레스 = 주소 } }
클래스 Student7 (이름 : 문자열, 점수 : 더블) 확장 Person7를 (이름, 점수)
6.3.6. 스칼라 추상 클래스
- 부모 클래스 경우,이 특정 방법이 바로 달성 할 수 있지만, 우선 다른 서브 클래스에 의존하는 다른 방법으로 달성 오버라이드 (override) 할 필요가있다. 이 경우, 부모 클래스는이 방법 만 포함 서명 방법, 메소드 본문 자유 형식으로 기록 할 수 있으며,이 형태는 추상적 인 방법이라고;
- 이 추상 필드의 추상 메소드를 포함하는 경우 클래스는, 또는, 그것은하지 인스턴스화하는 추상 클래스 선언 추상 클래스에 사용되어야한다;
- 때없이 키워드를 대체 할 수 있습니다 서브 클래스에서 재정의 추상 클래스의 추상 메소드;
- 예를 들면 :
패키지 cn.itcast.extends_demo 추상 클래스 Person9 ( 발에 이름 : 문자열) { // 리턴 타입은, 그렇지 않으면 기본 유니으로 돌아 주목해야 T DEF 의 sayHello : 문자열 DEF : sayBye 문자열 } 클래스 Student9 (이름 : 문자열) (가) 확장 Person9 (이름) { // 리턴 타입이 기본 그렇지 않으면 주목해야 DEF : 문자열 = "여보세요"+ 이름의 sayHello DEF : sayBye 문자열 = "안녕,"이름 + } 객체 Student9 { DEF 주 (인수 : 배열 [문자열]) { 발 S를 = 새로운 새로운 Student9 ( "톰") 에 println (s.sayHello) 에 println
(s.sayBye)
}
}
6.3.7. 스칼라 추상적 필드
- 부모 클래스는 필드에 정의되어 있지만 초기 값을 제공하지 않은 경우,이 필드 추상적 필드;
- 예를 들면 :
패키지 cn.itcast.extends_demo 추상 클래스 Person10 ( 발에 이름 : 문자열) {
//抽象필드
발 나이 : 지능
}
클래스 Student10 (이름 : 문자열) 확장 Person10 (이름) {
발의 연령 : 지능 = 50
}