zoukankan      html  css  js  c++  java
  • dart快速入门教程 (7.1)

    7.面向对象

    dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象

    7.1.类与对象

    void main() {
      // 注意:new关键字可以省略
      var p = new  Person();
      p.name = "xiaoqiang";
      p.showName();
      p.showAge();
    }
    
    class Person {
      String name;
      int age;
      void showName(){
        print("名字是:${name}");
      }
      void showAge () {
        print("年龄是:${age}");
      }
    }
    

    注意1:可以使用final来创建一个只读的属性

    void main() {
      // 注意:new关键字可以省略
      var p = new  Person();
      p.name = "xiaoqiang";
      p.showName();
      p.showAge();
      p.gender = "女";  // 报错, gender定义的时候是不能修改的
    }
    
    class Person {
      String name;
      int age;
      final String gender="男";
      void showName(){
        print("名字是:${name}");
      }
      void showAge () {
        print("年龄是:${age}");
      }
    }
    

    注意2: 方法不能被重载

    class Person {
      String name;
      int age;
      final String gender="男";
      void showName(){
        print("名字是:${name}");
      }
      void showAge () {
        print("年龄是:${age}");
      }
      void showName () { // 报错
        print("名字是:${name}");  
      }
    }
    

    7.2.计算属性

    计算属性从字面上可以理解为值是通过计算得来的

    import 'dart:math';
    
    void main() {
      // 注意:new关键字可以省略
      var p = new  RrightTriangle();
      // p.a = 3;
      // p.b = 4;
      // print(p.c);
      p.c = 5;
      print(p.a);
    
      
    }
    
    class RrightTriangle {
      num a, b;
      num get c {
          return sqrt(a*a + b*b);
        }
        set c(value) {
          a = sqrt(pow(value, 2) - 16);
        }
    }
    

    7.3.构造方法

    构造方法就是我们创建对象时调用的方法,如果没有自定义构造方法,则会调用默认的构造方法, 如果存在自定义的构造方法,则默认方法就无效,同时构造方法是不能重载的

    void main() {
      // 注意:new关键字可以省略
      var p = new Person("xiaoqiang", 12, "男");
      print(p.name);
      
    }
    
    class Person {
      String name;
      num age;
      String gender;
      Person(this.name, this.age, this.gender){
        print(this.name);
        print(this.age);
        print(this.gender);
      }
      // 如果再定义一个Person方法就会报错
    }
    

    可以定义多个构造方法

    
    void main() {
      // 注意:new关键字可以省略
      var p = new Person("xiaoqiang", 12, "男");
      print(p.name);
      // 创建对象的时候,可以使用fn构造方法
      var p2 = new Person.fn("xiaohong", 12);
      
    }
    
    class Person {
      String name;
      num age;
      String gender;
      Person(name, age, gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
        print(this.name);
        print(this.age);
        print(this.gender);
      }
      Person.fn(name, age) {
        print(name);
        print(age);
      }
    }
    

    如果一个类是不可变的,这个时候我们需要使用const来声明构造方法,并且把所有变量都设置为final

    import 'dart:math';
    
    void main() {
      // 注意:new关键字可以省略
      var p = const Person("xiaoqiang", 12, "男");
      p.name = "xxx";  // 报错
      
      
    }
    
    class Person {
      final String name;
      final num age;
      final String gender;
      const Person(this.name, this.age, this.gender);
      
    }
    

    螺钉课堂视频课程地址:http://edu.nodeing.com

  • 相关阅读:
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118 实验三 有限自动机的构造与识别
    1112对他人的博客评论及建议
    1029c语言文法
    1022词法分析实验总结
    词法分析
    0330 复利计算——单元测试
    0321 读《构建之法》第一,二,三章有感
    0316 复利计算总结(0330 更新)
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12047656.html
Copyright © 2011-2022 走看看