面向对象(接口,多接口)
main(){
var m = new Male('ll'); // 1.报错: Try removing the extra positional arguments.
m.run();
m.eat();
}
abstract class Animal{
eat();
}
// 定义抽象类
abstract class Person{
String name;
run();
sing();
}
// 多个接口实现:继承多个抽象类,直接,分隔开实现继承
class Male implements Person, Animel{
@override
String name;
// -->1
Male(this.name);
@override
run(){
print('$name is running');
}
@override
sing(){
print('$name is singing');
}
@override
eat(){
print('正在继承Animel抽象类');
}
}
混入
- Dart中可以使用mixin实现类似多继承的功能
- 作为mixin的类只能继承自Object(dart里面的所有东西都是继承自Object),不能继承其他类
- 作为mixin的类不能有构造函数
- 一个类可以mixin多个mixin类
- mixin绝不是继承,也不是接口,而是一种全新的特征
main(){
var a = new A('ll');
a.printB();
a.printC();
a.printD();
print(a.name);
}
class B{
printB(){
print('B类');
}
}
class C{
String name;
// 构造函数
C(this.name);
printC(){
print('C类--$name');
}
}
class D{
printD(){
print('D类');
}
}
// C上有构造函数,要通过普通继承方式继承C
class A extends C with B,D{
A(String name): super(name);
}
Dart面向对象(泛型)
main(){
String val = getVal('11');
getAllVal(11);
String s = getAllVal<String>('33');
int i = getAllVal<int>(3366);
List<String> a = ['1','3'];
print('$a,$s,$i');
}
String getVal(String val){
return val;
}
// 定义泛型函数:不校验接收参数类型
T getAllVal<T>(T val){
return val;
}
网友评论