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{}
由上可推测出一种情况,当多继承中,两个类中有一个或多个相同的方法时,会执行哪个呢,
经实验得出,会执行最后的那个