美文网首页
Flutter (九)变量、数据类型、方法定义、类定义、多继承、

Flutter (九)变量、数据类型、方法定义、类定义、多继承、

作者: MissBear灬 | 来源:发表于2020-01-13 12:01 被阅读0次

鉴于很多朋友私信让分享一些dart基础知识,今天就给大家分享一些dart基本操作!!!

  • 变量:一旦附上值,他的数据类型就定了 不能在赋其他类型值
1.
var username = 'Flutter';//username 就定了是字符串类型
username = 123;//此时再赋整型就行报错
2.
Object和dynamic 都是大的类型
  dynamic a = 'goood job'; //dynamic是可以推断出值是什么类型
  Object  b = 'goodd job';
  print(a.length);
  print(b.length);//b 是不具备length方法
  • 常量:设置一次值之后就不能在变了
1.
final psw1 = 'Flutter';
2.
const psw2 = 'Flutter';
  • 数据类型
int psw3 = 110;
double psw4 = 11.1;
//字符串转int
int psw5= int.parse('119');
double psw6 = double.parse('111.11');
//int转字符串
String psw7 = psw3.toString();
//四舍五入并且保留两位小数
String psw8 = 123.2262.toStringAsFixed(2);
print(psw8);//值是123.23

//bool类型
bool results = 123 > 110;
print(results);//打印结果:true
bool results = 1 == '1';
print(results);//打印结果:false

//List 是数组类型
List list = [1,3,5,7,9];//创建数组方式1
List newList = new List();//创建数组方式2
newList.add(2);//add 一个值进去
newList.addAll([4,6,8,10]);//add  一个数组进去
print(newList);//打印结果:2 4 6 8 10
print(newList.length);//打印结果:5
print(newList.first);//打印第一个值        打印结果:2
print(newList.last);//打印最后一个值     打印结果:10
print(newList[2]);//打印下标为2 的值    打印结果:6

//Map类型  对象类型
Map obj = {'x':1,'y':2,'z':3};//创建方式 1
Map newObj = new Map();//创建方式 2
newObj['x'] = 1;
newObj['y'] = 2;
print(newObj);//打印结果:{x: 1, y: 2}
print(obj.containsKey('x'));//判断是否包含x的key    打印结果:true
print(obj.containsKey('a'));//                     打印结果:false
obj.remove('y');//删除Map中对应的值                       
print(obj);//                                      打印结果:{x: 1, z: 3}

  • 定义方法
//无参  有返回值
//返回参数是字符串类型  方法名是getUserName
String getUserName(){
  return 'hello world';
}
String userName = getUserName();//调用

//有参  有返回值
//返回参数是字符串类型   方法名getPersionInfo  接收的参数是userId
String getPersionInfo(int userId){
  Map userInfon = {
    '111':'zhangsan',
    '222':'lisi',
  };
  return userInfon[userId.toString()];
}
String userId = getPersionInfo(111);//调用
print(userId);//打印结果:zhangsan

//可选参数
//1.可选参数 [ ]  中括号代表可选参数   不加中括号的话就是必传的参数
int addAge(int age1,[int age2]) {
  return age1+(age2 != null ? age2 : 0);
}
int age = addAge(1,2);//调用
print(age);//打印结果:3
//2.可以给参数赋上默认值  赋上默认值要给参数加上大括号
int addAge2([int age1,int age2 = 0]){
  return age1+age2;
}
int age2 = addAge2(1,2);//调用
print(age2);//打印结果:3

//匿名函数  for循环遍历数组
var list = ['abc','cde','afg'];
list.forEach((str){
  print(str);
});
打印结果:abc  cde  afg
  • 类的使用
//1.只是创建了一个类里面有2个属性
class Person {
  int age;
  String name;
}
p.age = 23;
print(p.age);

//2.具有实例化的方式创建一个类
class Person2 {
  //1.可以给这个类定义一些属性
  int age;
  String name;
  //构造函数 就是一个同名的方法
  Person2(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以给这个类定义一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
}
var p2 = new Person2(23,'zhansgan');//实例化的方式创建
print(p2.name);//打印结果:zhansgan
p2.sayHello();  //打印结果:My name is:zhansgan(调用了Person2里面的sayHello方法)
  • 类的继承
//1.创建了Worker类  继承 Person2
class Worker extends Person2 {//继承用  extends
  int salary;//比父类多了一个属性salary
  Worker(int age, String name,int salary) : super(age, name){//新添了一个属性salary
    this.salary = salary;
  }
  @override  //告诉编译器 我重写了父类的同名方法
  void sayHello(){
    super.sayHello();//先调用了父类的sayHello
    print('My salary is:'+this.salary.toString());
  }
}
//外界使用
var w = new Worker(20, 'lisi', 1000);
w.sayHello();//打印结果是 先打印父类的sayHello方法   再打印Worker的sayHello方法
  • dart 里面只能单继承 不能继承多个父类 如果有需要继承多个父类的需求需要用混合的方式实现
    比如看下面例子:
//1.定义了一个Eat类
class Eat {
  void eat(){
    print('吃饭');
  }
  void sayHello() {
    print('say hello in Eat');
  }
}
//2.定义了一个Sleep类
class Sleep {
  void sleep(){
    print('睡觉');
  }
  void sayHello() {
    print('say hello in Sleep');
  }
}
//3.定义了一个Person类混合了Eat和Sleep类
class Person with Eat,Sleep {//多继承  把Eat 和 Sleep 都混合到Person 里面去   这时Person3就具备了eat和sleep的方法
  //1.可以给这个类定义一些属性
  int age;
  String name;
  //构造函数
  Person3(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以给这个类定义一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
}
var p = new Person(18, 'wangwu');
p.eat();//这时p 具备了Eat类的方法
p.sleep();//这时p 具备了Sleep类的方法
p.sayHello();//p 还具备了我自己的方法  //注意 如果混合的类里面有和自身类同名的方法的时候优先使用自身类的方法、其次是用混合最后一个类的方法
  • 抽象类:就是我有一个想法 但是我不知道怎么实现。所以我就先把我的想法说出来。
    抽象类不能实例化 所以用抽象类就是为了定义一个规则 让别人遵守这个规则
//定义一个抽象类
abstract class Animal {
  //这是一个方法的实现
//  void have_a_baby(){
//    print(have_a_baby);
//  }
  //抽象方法  只有方法的定义
  void have_a_baby();
}
//这时再创建一个类继承Animal抽象类
class Person extends Animal {
  //1.可以给这个类定义一些属性
  int age;
  String name;
  //构造函数
  Person3(int age,String name){
    this.age = age;
    this.name = name;
  }
  //2.可以给这个类定义一些方法
  void sayHello(){
    print('My name is:'+this.name);
  }
  //3.实现have_a_baby  这时Person继承了Animal类。但是Animal类里面的方法没有实现,就会报错,此时需要子类实现这个方法
  @override
  void have_a_baby() {
    // TODO: implement have_a_baby
    print('have_a_baby');
  }
}

QQ:522608370

点个赞呗😊!!!

相关文章

  • Flutter (九)变量、数据类型、方法定义、类定义、多继承、

    鉴于很多朋友私信让分享一些dart基础知识,今天就给大家分享一些dart基本操作!!! 变量:一旦附上值,他的数据...

  • kotlin和java语法比较

    对象 类 继承 变量 常量 静态常量 定义方法 重载方法 Java 的写法 Kotlin 的写法 基本数据类型 j...

  • java基础大纲

    一、java基础 基础语法(数据类型,变量定义,关键字,运算符,流程控制)类与继承(如何定义类,如何实现继承类,如...

  • python基础-09-面向对象、装饰器

    面向对象 类概念 类的定义 类的实例化 类和实例的属性 类的私有变量 数据封装 继承 多态 多继承 类的特殊方法 ...

  • javascript中ES6的class写法

    在ES6中,javascript实现类定义、类继承及类中定义变量,构造方法,一般方法,静态方法 代码中均有注释

  • 类(Class)介绍:2-类的继承

    继承是面向对象的重要特性之一,类定义是累加的,每一个定义的类都是基于其父类,可以继承父类中定义的实例变量和方法。 ...

  • day18 单/多继承的实现

    定义人类 定义学生类: 定义工人类 单继承的实现 多继承的实现 定义父亲类 定义母亲类 定义孩子类 多继承的实现

  • 【Python】类

    知识点 类的定义 对象初始化 实验内容 定义简单的类 __init__ 方法 Python 中的继承 多继承 删除...

  • python基础 python类的成员和装饰器

    Python和c++一样,可以定义类,可以继承,类中又包含了类变量、实例变量(私有变量和公有变量)、方法(包括静态...

  • 概念区分

    成员变量 & 局部变量 定义位置 成员变量:定义在类中方法外 局部变量,定义在在类的方法中,或者方法的形式参数中 ...

网友评论

      本文标题:Flutter (九)变量、数据类型、方法定义、类定义、多继承、

      本文链接:https://www.haomeiwen.com/subject/qnyiactx.html