发文时间:2021年03月06日 01:21:29 编辑:Aaron 标签:记录Dart语言的学习历程 606
Dart是谷歌开发的计算机编程语言,后来被Ecma (ECMA-408)认定为标准。它被用于web、服务器、移动应用和物联网等领域的开发。
//定义一个类 class Cdata{ /* dart中的静态成员 1、使用static 关键词来实现类级别的变量和函数 2、静态方法不能访问非静态成员,非静态方法可以访问静态方法和公有方法(简而言之 公共方法可 以访问全部方法) */ //定义一个静态的属性 static String name='张三'; //定义一个静态的方法 static void show(){ print("${name} -- 方法"); } //定义一个非静态的属性和方法 (静态方法只可以操作静态的) int age=20; void cinfo(){ //非静态方法 可以调用全部 print(name);//访问静态属性的写法 ,不用this 因为可以直接调用 print(this.age);//访问非静态属性 可带this 可不带this show();//访问静态属性的方法 } } main(){ //main方法处调用静态属性或静态方法 // print(Cdata.name); // Cdata.show(); //调用成功 不用new Cdata c=new Cdata(); c.cinfo();//非静态的调用 静态方法 //总结就是 静态的方法 可以直接调用 类名.方法或属性 然后静态的不可以调用非静态的 }
class Pdata{ /* dart中的对象操作符 ? 条件运算符 判断当前值是否存在(或是否为对象) is 类型判断 if(变量 is int) 返回bool as 类型转换 .. 级联操作 (连缀-连写) */ String name; int age; Pdata(this.name,this.age); void getInfo(){ print("name = ${this.name} -- age= ${this.age}"); } } // .. 级联操作 案例 main(){ //假设需要更改Pdata中的name age 和调用getinfo方法 以往的写法是 Pdata a=new Pdata('张三',1); a.name='卡卡'; a.age=10; a.getInfo(); //成功调用 name = 卡卡 -- age= 10 print('-------------分隔线----------------'); //这样写太繁琐了 可以用级联来写 简化代码 a..name='卡卡1' ..age=20 ..getInfo();//成功简化调用 name = 卡卡1 -- age= 20 } //as 类型转换案例 // main(){ // //假设一个变量一开始是一个string 类型的 // var q; // q=''; // //然后又让这个变量去实例化类 // q=new Pdata('张三',20); // // q.getInfo();//然后调用类中的一个方法 这样可能会报错(版本不一致 可能会报错) //这样要调用的话 那就把这个变量强制转为对象类型 // //强制转化为对象类 // (q as Pdata).getInfo(); //成功调用 // } //? 条件运算符案例 // main(){ // Pdata p; //如果只是类赋值了变量 但是变量没有实例化类 // p.getInfo();//调用 p中的getInfo 那会报错 //预防这种错误就可以用 ? // p?.getInfo();//虽然没有返回值,因为本身就没有这个方法的 能杜绝不报错 // }
class Pdata{ /* dart中的类的继承 封装 继承 多态 1、子类可以使用extends 关键词 继承父类 2、子类会继承父类里可见的方法和属性等 但是不会继承构造函数 3、子类可以覆写父类里的方法 getter 和setter */ String name; int age; Pdata(this.name,this.age); void getInfo(){ print("父类name = ${this.name} -- age= ${this.age}"); } void newData() {} fuData(){ print('我是一个父类的方法a'); } void ziData() {} } //新建一个类 并且继承 Pdata类 假设新的一个类 继承带有构造函数的类 那么就需要加入 super class Web extends Pdata{ String sex; //初始化列表 给父类传参 也可以定义自己的属性sex Web(String name, int age,String sex) : super(name, age){ //可以点击报错 编译器 自动会生成 this.sex=sex; } //覆写父类的方法 覆写的时候 方法前面加个@override 为了规范和不会报错 // 也表示这个方法是覆写的 (可以写 可以不写) @override getInfo(){ print("子类的方法 ${this.sex}"); } newData(){ print('我是子类的1111一个方法,我是独一份的'); } //子类调用父类的方法 ziData(){ super.fuData(); // this.fuData();//都可以调用父类的工作 } } //操作继承的东西 main(){ //假设需要更改Pdata中的name age 和调用getinfo方法 操作父类的方法 Pdata w=new Web('张三',1,'男生'); // w.getInfo(); //成功调用 name = 张三 -- age= 1 //调用子类的方法 todo 这里有点小问题 无法调用子类中的方法 // w.newData(); //覆写 父类的方法 (父类和子类都有getInfo这个方法) w.getInfo();//输出 子类的方法 w.ziData(); }
若无特殊说明,此文章为博主原创。 写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/41.html
Dart系列(十)静态属性,类的继承、和..级联操作等
发文时间:2021年03月06日 01:21:29 编辑:Aaron 标签:记录Dart语言的学习历程 606
Dart是谷歌开发的计算机编程语言,后来被Ecma (ECMA-408)认定为标准。它被用于web、服务器、移动应用和物联网等领域的开发。
1、static静态属性 调用案例
2、对象的操作符
3、类的继承 extends等
若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/41.html