Dart中的类 对象

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

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

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

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

01 Dart中自定义类 使用类

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

class Person{

//变量
String name="张三";
int age=23;

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

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

void main(){

//实例化
var p1=new Person();

print(p1.name);//调用属性 张三

p1.getInfo();//调用方法 张三----23

p1.setInfo(28);//变量赋值

p1.getInfo();//调用方法 张三----28

}

02 Dart中自定义类的默认构造函数

class Person{

String name;
int age;

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

//默认构造函数的简写
Person(this.name,this.age);

//打印
void getInfo(){
print("${this.name}----${this.age}");
}
}

void main(){

var p=new Person("张三",20);
p.getInfo();//张三----20

var p2=new Person("李四",25);
p2.getInfo();//李四----25

}

 03 Dart中自定义类的命名构造函数

//dart里面构造函数可以写多个
class Person{
String? name;
int? age;

//默认构造函数的简写
Person(this.name,this.age);

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

//命名构造函数2
Person.setInfo(String name,int age){
this.name=name;
this.age=age;
}

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

Person p1=new Person("张三", 20);//默认实例化类的时候调用的是 默认构造函数
p1.getInfo();//张三----20

Person p2=new Person.now();//初始化的时候调用命名构造函数

Person p3=new Person.setInfo("李四", 25);//初始化的时候调用命名构造函数
p3.getInfo();//李四----25

}

04 Dart中把类单独抽象成一个模块

 新建一个文件夹lib,封装一个类Person,并调用它

    class Person{
    
    String name;
    int age;
    
    //默认构造函数的简写
    Person(this.name,this.age);
    
    void getInfo(){
    print("${this.name}----${this.age}");
    }
     
    }

     调用

    import 'lib/Person.dart';
    
    void main(){
    
    Person p1=new Person("李四", 33);
    
    p1.getInfo();//李四----33
      
    }

    ​​​​​​​05 Dart中的私有方法和私有属性

    Dart和其他面向对象语言不一样,Data中没有public private protected这些访问修饰符号

    但是我们可以使用_把一个属性或者方法定义成私有

    首先,封装一个类Animal,并调用它的私有方法和私有属

    class Animal {
    
    String _name;//私有属性
    int age;
    
    //默认构造函数的简写
    Animal(this._name,this.age);
    
    void getInfo(){
    print("${this._name}----${this.age}");
    }
    
    String getName(){
    return this._name;
    }
    
    //私有方法只有在当前类才能访问
    _run(){
    print("这是一个私有方法");
    }
    
    execRun(){
    this._run();//类里面方法的相互调用
    }
    
    }

    调用 

    import 'lib/Animal.dart';
    
    void main(){
    
    /**
     * 
     * Dart和其他面向对象语言不一样,Data中没有public private protected这些访问修饰符号
     * 但是我们可以使用_把一个属性或者方法定义成私有
     * 
     */
    
    Animal a=new Animal("小猫", 3);
    
    print(a.age);//可以访问
    
    // print(a._name);//被设置成私有属性没法访问
    
    //可以通过公有的方法,间接的去调用私有的属性
    print(a.getName());//小猫
    
    //可以通过公有的方法,间接的去调用私有的方法
    a.execRun();
    
    }

     

    ​​​​​​​06 类中的getter和setter修饰符的用法

    class Rect{
    
    num height=0;
    num width=0;
    
    Rect(this.height,this.width);
    
    //get属性
    get area{
    return this.height*this.width;
    }
    
    //set属性
    set areaHeight(value){
    this.height=value;
    }
    }
    
    void main(){
    
    Rect r=new Rect(10,2);
    
    print("面积:${r.area}");//注意调用直接通过访问属性的方法访问area
    
    r.areaHeight=6;
    
    print(r.area);//12
    
    }

    ​​​​​​​07 类中的初始化列表

    //Dart 中我们也可以在构造方法体运行之前初始化实例变量
    class Rect{
    
    num height=0;
    num width=0;
    
    //先赋值再执行构造函数
    Rect():height=2,width=10{
    
    print("${this.height}----${this.width}");
    
    }
    
    getArea(){
    
    return this.height*this.width;
    
    }
    
    }
    
    
    void main(){
    
    Rect r=new Rect();
    
    print(r.getArea());//20
    
    }

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值