class Person { //非静态属性、方法 // String name = ‘张三‘; // void show() { // print(name); // } //非静态属性、方法 static String name = ‘张三‘; static void show() { print(name); } } main(){ // var p= new Person(); // print(p.name); // p.show(); print(Person.name); Person.show(); }
class Person { static String name = ‘张三‘; int age=20; static void show() { print(name); } void printInfo(){ /*非静态方法可以访问静态成员以及非静态成员*/ // print(name); //访问静态属性 // print(this.age); //访问非静态属性 show(); //调用静态方法 } static void printUserInfo(){//静态方法 print(name); //静态属性 show(); //静态方法 //print(this.age); //静态方法没法访问非静态的属性 // this.printInfo(); //静态方法没法访问非静态的方法 // printInfo(); } } void main(){ Person p=new Person(); p.printInfo(); //调用非静态方法 Person.printUserInfo(); //调用静态方法 }
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } void main(){ // Person p; // p?.printInfo(); //如果p位空,则不调用printInfo方法 Person p=new Person(‘张三‘, 20); p?.printInfo(); //如果p不为空,则调用printInfo方法 }
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } void main(){ var p1; p1=‘‘; p1=new Person(‘张三1‘, 20); // p1.printInfo(); (p1 as Person).printInfo(); }
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } void main(){ Person p=new Person(‘张三‘, 20); if(p is Person){ p.name="李四"; } p.printInfo(); print(p is Object); }
4) .. 级联操作 (连缀)
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } void main(){ // Person p1=new Person(‘张三1‘, 20); // p1.printInfo(); // p1.name=‘张三222‘; // p1.age=40; // p1.printInfo(); Person p1=new Person(‘张三1‘, 20); p1.printInfo(); p1..name="李四" //连缀操作,省去等于,与上面代码效果相同 ..age=30 ..printInfo(); }
面向对象的三大特性:封装 、继承、多态
Dart中的类的继承:
1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数
3、子类能复写父类的方法 getter和setter
class Person { String name=‘张三‘; num age=20; void printInfo() { print("${this.name}---${this.age}"); } } class Web extends Person{ //使用extends继承父类 } void main(){ Web w=new Web(); print(w.name); w.printInfo(); }
class Person { String name; num age; Person(this.name,this.age); void printInfo() { print("${this.name}---${this.age}"); } } class Web extends Person{ //鼠标放在Web上,然后点击快速修复 Web(String name, num age) : super(name, age); } main(){ Person p=new Person(‘李四‘,20); p.printInfo(); Web w=new Web(‘张三‘, 12); w.printInfo(); }
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}"); } } main(){ Web w=new Web(‘张三‘, 12,"男"); w.printInfo(); w.run(); }
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}"); } } main(){ Web w=new Web(‘张三‘, 12,"男"); w.printInfo(); w.run(); }
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 //可以写也可以不写 建议在覆写父类方法的时候加上 @override void printInfo(){ print("姓名:${this.name}---年龄:${this.age}"); } @override work(){ print("${this.name}的工作是写代码"); } } main(){ Web w=new Web(‘李四‘,20); w.printInfo(); w.work(); }
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‘); print(this.name); //通过this,子类调用父类中的属性 super.work(); //通过super,子类调用父类的方法 } //覆写父类的方法 @override //可以写也可以不写 建议在覆写父类方法的时候加上 @override void printInfo(){ print("姓名:${this.name}---年龄:${this.age}"); } } main(){ Web w=new Web(‘李四‘,20); w.run(); }
原文:https://www.cnblogs.com/The-Chao/p/11923344.html