Dart中的类、对象

Person.dart

//定义Person类
class Person {
  //属性
  String name;
  int age;

  //默认构造函数
  Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  //命名构造函数
  Person.now() {
    print("我是命名函数");
  }

  //方法
  void printPersonInfo() {
    print("${this.name}:${this.age}");
  }

void setPersonInfo(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

Animal.dart

class Animal {
  String _name; //表示私有属性,在属性前面加上_
  int age;
  //默认够着函数的简写
  Animal(this._name, this.age);

  void printName() {
    print("${this._name}");
  }

  void _printAge() {
    print("${this.age}");
  }
}

Rect.dart

class Rect {
  num height;
  num width;
  
  Rect(this.height, this.width);

  //get方法
  get area {
    return this.height * this.width;
  }

  //set方法
  set areaHeight(value) {
    this.height = value;
  }
}

oop.dart

import 'lib/Person.dart';
import 'lib/Animal.dart';
import 'lib/Rect.dart';
//Dart 中所有对象都继承自Object类
//Dart 是一门实用类和单继承的面向对象的语言,所有类都是Object的子类

void main() {
  //实例化Person类
  var p = new Person("张三", 18);
  print("-----------------0");
  p.printPersonInfo();
  p.setPersonInfo("周建", 30);
  print("-----------------1");
  p.printPersonInfo();
  print("-----------------2");
  Person person = new Person("李四", 28);
  person.printPersonInfo();
  print("-----------------3");
  Person p1 = new Person.now();
  p1.setPersonInfo("李四", 28);

  //私有属性
  Animal amimal = new Animal("小猫", 2);
  print(amimal.age); //name 访问不了,是私有的
  amimal.printName();
  print("-----------------4");

  //set 和 get

  Rect rect = new Rect(5, 4);
  print(rect.area);

  rect.areaHeight = 10;
  print(rect.area);

  print("-----------------5");

  Square square = new Square();
  print(square.area);
}

class Square {
  int height;
  int width;
  //初始化之前,给变量赋值
  Square()
      : height = 5,
        width = 5 {}

  get area {
    return this.height * this.width;
  }
}

输出结果:

[Running] dart "/Users/zhoujian/DartDemo/oop.dart"
-----------------0
张三:18
-----------------1
周建:30
-----------------2
李四:28
-----------------3
我是命名函数
2
小猫
-----------------4
20
40
-----------------5
25

[Done] exited with code=0 in 1.134 seconds

发布了272 篇原创文章 · 获赞 68 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/u014005316/article/details/104300083