Flutter学习笔记(五)类

dart语言和java一样,也是面向对象的语言,有封装继承多态的特性

封装

class Persion {//persion为类名
  static String address ="合肥"
  String name;//属性
  int age;
  int _id;//加上下划线为私有属性
  
  Persion(this.name, this.age);//默认构造函数,当实例化一个对象时,会自动调用到该函数
  Persion.now() {
      print("这是一个命名构造函数");
      this._id = 10
  }
  getId(){//获得私有属性
      return _id;  
  }
  getInfo() {//方法
    print("name : $name  age : $age");
  }
  
  static void show(){
      print("name:$name");  
  }
  
}
 
void main() {
  Persion man = new Persion("ShenZhen", 40);    //实例化对象(调用了默认构造函数)
  man.getInfo();
  print(man.getId());
  Persion man2 = new Persion.now();             //实例化对象的时候调用了命名构造函数
  
  print(Persion.address);
  Persion.show();
}

继承

class Persion {
      String name ;
      int age ;
      Persion(this.name,this.age);
      void show() {
            print("name : $name  and  age : $age");
      }
}
 
class Superman extends Persion{                         //Superman继承Persion
      Superman(String name, int age) : super(name, age);    //super()里的参数是要传递给父类的参数
}
 
void main() {
      Superman man = new Superman("深圳",40);               //Superman实例化对象
      man.show();                                          //Superman实例化的对象可以直接使用父类Persion的方法show();
}

//抽象类
abstract class Animal(){
    eat();
}
class Dog extends Animal{
    @override
    eat(){
        print("dog eat meat")    
    }
}

多态

//dart语言是以抽象类为接口
abstract class Machine(){
    String SN;
    work(){}
}
abstract class Connect(){
    String SN;
    call(){}
}
abstract class Mobile implements Machine,Connect{
    @override
    String SN;
    @override
    work(){
            
    }
    @override
    call(){
            
    }
}
//另外还有一种,似乎是为了实现多继承
classC with Machine ,Connect{}

由上可推测出一种情况,当多继承中,两个类中有一个或多个相同的方法时,会执行哪个呢,
经实验得出,会执行最后的那个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值