美文网首页dart系列
Dart8(八)对象、类、构造函数、私有属性和方法

Dart8(八)对象、类、构造函数、私有属性和方法

作者: Kernel521 | 来源:发表于2020-06-29 21:05 被阅读0次

    一、面向对象编程(oop)的三个基本特征:

    • 封装:封装是对象和类概念的主要特征。封装,把客观事物封装成抽象的类,并把自己的属性和方法提供给其他对象
    • 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
    • 多态:允许将子类类型的指针赋值给父类类型的指针,同一个函数调用会有不同的执行效果。
    • Dart所有的东西都是对象,所有的对象都继承自object类
    • Dart 是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是object 的子类
    • 一个类通常由属性和方法组成

    二、构造函数 ( 实例化类的时候自动触发的方法 )

    1、默认构造函数 (只能写一个)

    class Person {
    String name;
    int age;
    Person ( String this.name, int this.age );默认构造函数
    void printInfo () { // 方法,需要通过实例去调用
    print("${ this.name } ----- ${ this.age }")
    }
    }
    void main() {
    Person p1 = new Person("张三",20); 一初始化就调用默认构造函数
    p1. printInfo();
    }
    

    2、命名构造函数(可以写多个)

    class Person {
    String name;
    int age;
    Person.now () { }  命名构造函数
    void printInfo () {
    print("${ this.name } ----- ${ this.age }")
    }
    }
    void main() {
    Person p1 = new Person.now("张三",20);
    p1. printInfo();
    }
    

    三、私有属性 私有方法 (前面加_)

    四、get set

    class Ract {
    num width;
    num height;
    Ract( this.width, this.height );
    get area { // get 调用的时候不用加()
    return this.height * this.width
    }
    set areaHeight( value ) {
    this.height = value;
    }
    }
    void main {
     Ract  r = new Ract ( 10, 2 );
    r.areaHeight = 6;
    print(" 面积 : ${ r.area }")
    }
    

    五、初始化列表

    构造函数运行之前初始化实例变量

    class Ract {
    int width;
    int height;
    Ract() : height = 2, width = 10 {
    print( "${this.height} --- ${this.width}" );
    }
    getArea ( ) {
    return this.height * this.width;
    }
    }
    void main {
    Ract  r = new Ract ( );
    print( r.getArea() );
    }
    

    六、继承

    • extends
    • @override 在复写父类方法的时候写上
    • 子类调用父类的方法 super.方法名
    class Person {
    String name;
    num age;
    Person ( this.name, this.age );
    void printInfo() {
    print( "${this.name} --- ${this.age}");
    }
    }
    class Child extends Person {
    String sex;
    Child( this.name, this.age, String sex ) : super( name, age ) {
    this.sex = sex;
    }
    run () {
    }
    } 
    void main() {
    Child c = new Child( '张三',12 );
    c.printInfo(); // 张三 12
    }
    

    相关文章

      网友评论

        本文标题:Dart8(八)对象、类、构造函数、私有属性和方法

        本文链接:https://www.haomeiwen.com/subject/fbiofktx.html