面向?qū)ο螅ń涌诳涡浚嘟涌冢?/h4>
main(){
var m = new Male('ll'); // 1.報(bào)錯: Try removing the extra positional arguments.
m.run();
m.eat();
}
abstract class Animal{
eat();
}
// 定義抽象類
abstract class Person{
String name;
run();
sing();
}
// 多個接口實(shí)現(xiàn):繼承多個抽象類笼痛,直接芒珠,分隔開實(shí)現(xiàn)繼承
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實(shí)現(xiàn)類似多繼承的功能
- 作為mixin的類只能繼承自O(shè)bject(dart里面的所有東西都是繼承自O(shè)bject),不能繼承其他類
- 作為mixin的類不能有構(gòu)造函數(shù)
- 一個類可以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;
// 構(gòu)造函數(shù)
C(this.name);
printC(){
print('C類--$name');
}
}
class D{
printD(){
print('D類');
}
}
// C上有構(gòu)造函數(shù),要通過普通繼承方式繼承C
class A extends C with B,D{
A(String name): super(name);
}
Dart面向?qū)ο螅ǚ盒停?/h4>
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;
}
// 定義泛型函數(shù):不校驗(yàn)接收參數(shù)類型
T getAllVal<T>(T val){
return val;
}
main(){
var m = new Male('ll'); // 1.報(bào)錯: Try removing the extra positional arguments.
m.run();
m.eat();
}
abstract class Animal{
eat();
}
// 定義抽象類
abstract class Person{
String name;
run();
sing();
}
// 多個接口實(shí)現(xiàn):繼承多個抽象類笼痛,直接芒珠,分隔開實(shí)現(xiàn)繼承
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抽象類');
}
}
main(){
var a = new A('ll');
a.printB();
a.printC();
a.printD();
print(a.name);
}
class B{
printB(){
print('B類');
}
}
class C{
String name;
// 構(gòu)造函數(shù)
C(this.name);
printC(){
print('C類--$name');
}
}
class D{
printD(){
print('D類');
}
}
// C上有構(gòu)造函數(shù),要通過普通繼承方式繼承C
class A extends C with B,D{
A(String name): super(name);
}
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;
}
// 定義泛型函數(shù):不校驗(yàn)接收參數(shù)類型
T getAllVal<T>(T val){
return val;
}