클래스 다트하고 있습니다 단일 상속 객체 지향 언어는, 모든 객체는 클래스의 인스턴스는, 모든 클래스는 객체의 하위 클래스입니다.
객체 지향 프로그래밍 (OOP)의 세 가지 기본 기능은 다음과 같습니다 캡슐화, 상속, 다형성
패키지 : 패키지가 객체의 주요 특징과 클래스의 개념이다. 패키지, 자신의 속성과 다른 객체의 호출에 가능한 방법의 추상 클래스, 및 부분으로 포장 된 목적 것들, 숨겨진 속성과 메소드의 일부 동안.
상속 : 객체 지향 프로그래밍 (OOP) 언어의 가장 큰 특징은 "상속"입니다. 상속은 이러한 능력을 의미한다 : 원래 클래스의 경우이 함수를 다시 작성하고 확장 할 필요없이, 기존 클래스의 기능을 사용할 수 있습니다.
다형성 : 서브 포인터 타입 상위 포인터에 할당 유형을 허용 동일한 함수 호출은 다른 효과를 실행했다.
-
생성자
// 클래스는 Person { // 문자열 이름 = '홍길동'; // INT = 20 시대입니다 // // 기본 생성자 // 인격 () { // 이 방법의 내용의 생성자 함수입니다 인쇄 ( ' 시간 트리거 ')의 예; // } // 무효 printInfo () { // 인쇄 ( "$ ---- $ {} {this.name this.age}"); // } // } // {Person 클래스 // 문자열 이름; // INT 나이; // // 기본 생성자 // 인격 (문자열 이름, INT 나이) { // this.name = 이름; // this.age = 나이; // } // 무효 printInfo () { // 인쇄 ( "$ ---- $ {} {this.name this.age}"); // } // } 클래스 는 Person { 문자열 이름, INT 나이; / / 기본 생성자 속기, 그래서 일반적으로 인격 ( 다음은이 .name을, 다음은이 .age), 무효 printInfo () { 인쇄 ( "$ ---- $ {} {this.name this.age}" ); } } 공극 ) (주 { 인격은 P1 = 새로운 새로운 인격 ( '홍길동', 20이다 ); p1.printInfo (); 인격 P2 = 새로운 새사람 ( '홍길동', 25 ); p2.printInfo (); }
(1) 사이의 차이 : 생성자 자바 약간 상이한는 생성자 내부 다트 더 기록 할 수있다.
클래스 는 Person { 문자열 이름을, INT 나이; // 기본 생성자 속기 인격 ( 다음은이 .name을, 다음은이 .age) Person.now () { 인쇄 ( '나는라는 이름의 생성자입니다' ); } Person.setInfo (문자열 이름, INT의 나이) { 다음은이 .name을 = 이름, 이것을 .age = 나이; } 무효 printInfo () { 인쇄 ( "$ ---- $ {} {this.name this.age}" ); } } 무효 메인 () { // VAR DateTime.Now 새로운 새로운 D = (); //날짜 시간이 생성자라는 이름의 호출의 예 // 인쇄 (D)를; // 인격 새 새 P1은 사람 ( '홍길동', 20) =; // 클래스의 기본 인스턴스가 호출 될 때 기본 생성자 // 인격 P1 새로운 새로운 = ()을 Person.now; // 이름 생성자 는 Person P1 = 새로운 새로운 Person.setInfo ( '홍길동', 30 ); p1.printInfo ();
}
2 개의 차이 : 이 공공 개인 보호 된 액세스 한정자의 다트 없음,하지만 우리는 _ 사용은 개인 재산 또는 방법으로 정의 할 수 있습니다.
3 차이 게터와 세터 개질제
클래스 사각형 { 이중 높이; 더블 폭; 사각형 ( 본 .height의, 이 .width); // 게터修饰符 지역 {얻을 반환 이 .height의 * 이 .width을; } // 세터修饰符 설정 areaHeight (값) { 이 .height의 = 값; } } 공극 의 main () { 사각형 R = 사각형 (10.0,5.0 ); (r.area) 인쇄; r.areaHeight = 20.0 ; (r.area) 인쇄; }
차이 4 :. 다트는 생성자 본문을 실행하기 전에 인스턴스 변수를 초기화 할 수 있습니다
클래스 사각형 { INT 높이; INT 폭; 사각형 () : 세로 = 2, 폭 = 10 { 인쇄 ( "$ {} --- this.height this.width $ {}" ); } 의 getArea는 () { 반환 이 .height의 * 이 .width 단계; } } 공극 의 main () { 사각형의 R = 새로운 사각형 (); 인쇄 (r.getArea ()); }
-
다트의 정적 멤버와 정적 메소드
클래스 사람 { 정적 문자열 이름 = '张三' ; 정적 무효 쇼 () { 인쇄 (이름); } } 공극 의 main () { 프린트 (Person.name); () Person.show; }
그리고 자바 구문은 기본적으로 동일합니다.
정적 메소드가 액세스 할 수없는 비 정적 멤버 수있는 전용 액세스 정적 멤버.
비 정적 메서드는 비 정적 멤버에 액세스 할 수 있습니다, 당신은 또한 정적 멤버에 액세스 할 수 있습니다.
-
오브젝트 연산자 다트
조건 연산자 -?
클래스 는 Person { 문자열 이름, INT 나이, 인격 ( 다음은이 .name을, 다음은이 .age), 무효 printInfo () { 인쇄 ( "$ --- $ {} {this.name this.age}" ); } } 무효 메인 () { 는 Person p를 p.printInfo (); // NoSuchMethodError :. 상기 방법에서, 'printInfo가'ON 널 불렸다 P .printInfo ()? // p가 NULL, printInfo 방법의 구현이 아닌 경우. 그렇지 않으면 건너 뜁니다. }
유형 변환 (자바 비슷한 캐스트) -로
(사람 등 P) .printInfo ();
유형 판단 --is
경우 {(p는 사람입니다) ... }
캐스케이드 작업 - ..
P..NAME = "홍길동" ..age = 30 ..printInfo ();