Dart中的对象、类

面向对象编程(OOP)的三个基本特征是:封装、继承、多态

  封装:封装是对象和类概念的主要特性。封装,把客观事物封装成抽象的类,并且把自己的部分属性和方法提供给其他对象调用, 而一部分属性和方法则隐藏。
            
  继承:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
        
  多态:允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效果 。

Dart所有的东西都是对象,所有的对象都继承自Object类。

Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类

一个类通常由属性和方法组成。

Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类

class Person {
  String name = "张三";
  int age = 23;
  void getInfo() { 
    print("${this.name}----${this.age}");
  }

  void setInfo(int age) {
    this.age = age;
  }
}

  var p1 = new Person();
  print(p1.name);
  p1.getInfo();

  Person p2 = new Person();
  print(p2.name); 
  p2.setInfo(28);
  p2.getInfo();

构造函数

class Person {
  String name = '张三';
  int age = 20;
  //默认构造函数
  Person() {
    print('这是构造函数里面的内容  这个方法在实例化的时候触发');
  }
  void printInfo() {
    print("${this.name}----${this.age}");
  }
}
  Person pe = Person();
  pe.printInfo();

默认构造函数

class Student {
  late String name;
  late int age;
  //默认构造函数
  Student(String name, int age) {
    this.name = name;
    this.age = age;
  }
  void printInfo() {
    print("${this.name}----${this.age}");
  }
}
  Student stu = new Student("小明", 38);
  stu.printInfo();

默认构造函数的简写

class Person {
  String name;
  int age;
  //默认构造函数的简写 
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}----${this.age}");
  }
}
  Person p2 = new Person('李四', 25);
  p2.printInfo();

dart里面命名构造函数可以写多个


class Student {
  late String name;
  late int age;
  //默认构造函数的简写
  Student(this.name, this.age);
   
  Student.now() {
    print('我是命名构造函数');
  }
    
  Student.setInfo(String name, int age) {
    this.name = name;
    this.age = age;
  }

  void printInfo() {
    print("${this.name}----${this.age}");
  }
}

私有属性和私有方法:首先必须是在一个新的文件中才能有效

class Animal{
  String _name;   //私有属性
  int age; 
  //默认构造函数的简写
  Animal(this._name,this.age);

  void printInfo(){   
    print("${this._name}----${this.age}");
  }
    //外部可以通过方法获得私有属性 _name
  String getName(){  
    return this._name;
  } 
  void _run(){
    print('这是一个私有方法');
  }

    //外部可以通过其他方法获得私有方法 _run()
  execRun(){ 
    this._run();  //类里面方法的相互调用
  }
}

类中的 getter 和 setter 修饰符

class Rect {
  num height;
  num width;

  Rect(this.height, this.width);
  get area {
    return this.height * this.width;
  } 
  set areaHeight(value) {
    this.height = value;
  }
}

  Rect r = new Rect(10, 4);
  print("面积:${r.area}");
  r.areaHeight = 6;

  print(r.area);

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

class Rect{

  int height;
  int width;
  Rect():height=2,width=10{
    
    print("${this.height}---${this.width}");
  }
  getArea(){
    return this.height*this.width;
  } 
}

  Rect r=new Rect();
  print(r.getArea()); 

此文章仅做学习记录使用,如有不足之处请各位大神指出,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值