Dart靜態方法、對象操作符和類的繼承


/*
Dart中的靜態成員:

  1、使用static 關鍵字來實現類級別的變量和函數
  2、靜態方法不能訪問非靜態成員,非靜態方法可以訪問靜態成員

*/

// class Person {
//   static String name = '張三';
//   static void show() {
//     print(name);
//   }
// }

// main(){
//   print(Person.name);
//   Person.show();  
// }

class Person {
  static String name = '張三';
  int age=20;
  
  static void show() {
    print(name);
  }
  void printInfo(){  /*非靜態方法可以訪問靜態成員以及非靜態成員*/

      // print(name);  //訪問靜態屬性
      // print(this.age);  //訪問非靜態屬性

      show();   //調用靜態方法
  }
  static void printUserInfo(){//靜態方法

        print(name);   //靜態屬性
        show();        //靜態方法

        //print(this.age);     //靜態方法沒法訪問非靜態的屬性

        // this.printInfo();   //靜態方法沒法訪問非靜態的方法
        // printInfo();

  }

}

main(){
  // print(Person.name);
  // Person.show(); 

  // Person p=new Person();
  // p.printInfo(); 

  Person.printUserInfo();
  
}
/*
Dart中的對象操作符:

    ?     條件運算符 (了解)
    as    類型轉換
    is    類型判斷
    ..    級聯操作 (連綴)  (記住)
*/

class Person {
  String name;
  num age;
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
  
}

main(){ 

  // Person p;
  // p?.printInfo();



  //  Person p=new Person('張三', 20);
  //  p?.printInfo();




    // Person p=new Person('張三', 20);

    // if(p is Person){
    //     p.name="李四";
    // } 
    // p.printInfo();
    // print(p is Object);

    

    // var p1;

    // p1='';

    // p1=new Person('張三1', 20);

    // // p1.printInfo();
    // (p1 as Person).printInfo();

    



  //  Person p1=new Person('張三1', 20);

  //  p1.printInfo();

  //  p1.name='張三222';
  //  p1.age=40;
  //  p1.printInfo();

   Person p1=new Person('張三1', 20);

   p1.printInfo();

   p1..name="李四"
     ..age=30
     ..printInfo();
  
}

/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name='張三';
  num age=20; 
  void printInfo() {
    print("${this.name}---${this.age}");  
  } 
}
class Web extends Person{

}

main(){   

  Web w=new Web();
  print(w.name);
  w.printInfo();
 
}
/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name;
  num age; 
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
}


class Web extends Person{
  Web(String name, num age) : super(name, age){

  }
  
}

main(){ 

  // Person p=new Person('李四',20);
  // p.printInfo();

  // Person p1=new Person('張三',20);
  // p1.printInfo();


  Web w=new Web('張三', 12);

  w.printInfo();


}
/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name;
  num age; 
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
}


class Web extends Person{
  String sex;
  Web(String name, num age,String sex) : super(name, age){
    this.sex=sex;
  }
  run(){
   print("${this.name}---${this.age}--${this.sex}");  
  }
  
}

main(){ 

  // Person p=new Person('李四',20);
  // p.printInfo();

  // Person p1=new Person('張三',20);
  // p1.printInfo();


  Web w=new Web('張三', 12,"男");

  w.printInfo();

  w.run();

}
/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name;
  num age; 
  Person(this.name,this.age);
  Person.xxx(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
}


class Web extends Person{
  String sex;
  Web(String name, num age,String sex) : super.xxx(name, age){
    this.sex=sex;
  }
  run(){
   print("${this.name}---${this.age}--${this.sex}");  
  }
  
}

main(){ 

  // Person p=new Person('李四',20);
  // p.printInfo();

  // Person p1=new Person('張三',20);
  // p1.printInfo();


  Web w=new Web('張三', 12,"男");

  w.printInfo();

  w.run();

}
/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name;
  num age; 
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
  work(){
    print("${this.name}在工作...");
  }
}

class Web extends Person{
  Web(String name, num age) : super(name, age);

  run(){
    print('run');
  }
  //覆寫父類的方法
  @override       //可以寫也可以不寫  建議在覆寫父類方法的時候加上 @override 
  void printInfo(){
     print("姓名:${this.name}---年齡:${this.age}"); 
  }
  @override
  work(){
    print("${this.name}的工作是寫代碼");
  }

}





main(){ 

  Web w=new Web('李四',20);

  w.printInfo();

  w.work();
 
}
/*

面向對象的三大特性:封裝 、繼承、多態


Dart中的類的繼承:  
    1、子類使用extends關鍵詞來繼承父類
    2、子類會繼承父類里面可見的屬性和方法 但是不會繼承構造函數
    3、子類能復寫父類的方法 getter和setter

*/

class Person {
  String name;
  num age; 
  Person(this.name,this.age);
  void printInfo() {
    print("${this.name}---${this.age}");  
  }
  work(){
    print("${this.name}在工作...");
  }
}

class Web extends Person{
  Web(String name, num age) : super(name, age);

  run(){
    print('run');
    super.work();  //自類調用父類的方法
  }
  //覆寫父類的方法
  @override       //可以寫也可以不寫  建議在覆寫父類方法的時候加上 @override 
  void printInfo(){
     print("姓名:${this.name}---年齡:${this.age}"); 
  }
  

}


main(){ 

  Web w=new Web('李四',20);

  // w.printInfo();

  w.run();
 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM