Dart学习9、静态成员、操作符和类的继承

本文介绍了Dart编程中的静态成员用法,包括静态变量和方法,强调了它们不能访问非静态成员。还探讨了对象操作符,如条件运算符、类型转换、类型判断和级联操作。此外,详细阐述了Dart的继承机制,展示了如何创建子类、继承父类属性和方法,并覆盖父类方法。示例代码帮助理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dart中的静态成员

 1、使用static 关键字来实现类级别的变量和函数
 2、静态方法不能访问非静态成员,非静态方法可以访问静态成员
class Person{
 static String name = "李四";
 static void show (){
    print(name);
  }
}

void main(List<String> args) {
  //非静态的属性、方法只能通过实例化类来访问
  // var p = new Person();
  // p.show();
  print(Person.name);//李四
  Person.show();//李四
}

示例二

class Person{
 static String name = "李四";
 int age = 23;
 static void show (){
    print(name);
  }

  //非静态方法可以访问静态以及非静态成员
  void printInfo(){
    print(name);//访问静态属性
    print(this.age);//访问非静态属性
    show();//调用静态方法
  }

  //静态方法
  static void printUserInfo(){
    print(name);//静态属性
    show();//调用静态方法
    //静态方法没法访问非静态的属性和非静态方法
    // print(age); 
    // printInfo();
  }
}

void main(List<String> args) {
  Person p = new Person();
  p.printInfo();
}

Dart中的对象操作符

1、?       条件运算符
2、as       类型转换
3、is       类型判断
4、..       级联操作(连缀)
class Person {
  String? name;
  num? age;
  Person(this.name, this.age);

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

void main(List<String> args) {
  Person p = new Person("name", 23);
  //类型判断
  if (p is Person) {
    p.name = "张三";
  }
  p.printInfo();

  //as 类型转换
  var p1;
  p1 = "";
  p1 = new Person("AA", 25);
  (p1 as Person).printInfo();

  //..级联操作
   Person p2 = new Person("BB", 34);
  //  p2.printInfo();
  //  p2.name = "CC";
  //  p2.age = 45;
  //  p2.printInfo();//CC----45
   //可以简化为
   p2..name = "CC"
   ..age = 45
   ..printInfo();//CC----45
}

Dart中的继承

1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法,但是不会继承构造函数
3、子类能复写父类的方法

示例一

class Person {
  String name = "AA";
  num age  =23;
  void printInfo(){
     print("${this.name}----${this.age}");
  }
}

class Web extends Person {

}

void main(List<String> args) {
    Web w = new Web();
    print(w.name);//AA
    w.printInfo();//AA----23
}

示例二

class Person {
  String name;
  num age;

  Person(this.name,this.age);

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

class Web extends Person{

  String? sex;

  Web(String name,num age,String sex):super(name, age){
    this.sex = sex;
  } 

  run(){
     print("${this.name}----${this.age}---${this.sex}");
  }
}

void main(List<String> args) {
  Web w = new Web("AA", 34,"男");
  w.printInfo();//AA----34
  w.run();//AA----34---男
}

示例三:给命名构造函数传参

class Person {
  String name;
  num age;

  Person(this.name,this.age);

  Person.xxx(this.name,this.age);

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

class Web extends Person{

  String? sex;

  Web(String name,num age,String sex):super.xxx(name, age){
    this.sex = sex;
  } 

  run(){
     print("${this.name}----${this.age}---${this.sex}");
  }
}

void main(List<String> args) {
  Web w = new Web("AA", 34,"男");
  w.printInfo();//AA----34
  w.run();//AA----34---男
}

在子类中覆写父类的方法

class Person {
  String name;
  num age;

  Person(this.name,this.age);

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

  work(){
    print("${this.name}在工作....");
  }
}

class Web extends Person {
  Web(String name,num age):super(name,age);

  run(){
    print("run");
  }

  //覆写父类的方法
  @override//表示这个方法是覆写父类的方法,建议写上
  void printInfo (){
     print("姓名:${this.name}----年龄:${this.age}");
  }

  @override
  work() {
    print("${this.name}的工作是敲代码");
  }
}

void main(List<String> args) {
  Web w = new Web("AA", 23);
  w.printInfo();//姓名:AA----年龄:23
  w.work();//AA的工作是敲代码
}

记录Dart学习,一起学习呀!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JMchen123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值