3) 類與單繼承
void main(){
var p = new Person(12,'haha'); //實(shí)例化
// p.age = 123;
print(p); //Instance of 'Person'
print(p.age); //12
print(p.name); //haha
p.sayHello(); //my name is:"haha"
var w = new Worker(22, 'ouyou', 2000);
w.sayHello(); /* my name is:"ouyou"
my salary is 2000
*/
}
class Person { //定義叫Person的類
int age;
String name;
//構(gòu)造函數(shù)
Person(int age , String name){
this.age = age;
this.name = name;
}
void sayHello(){
print('my name is:"' + this.name+'"');
}
}
class Worker extends Person{ //extends 單繼承
int salary;
Worker(int age,String name, int salary):super(age,name){ //:super()表示該構(gòu)造調(diào)用父類
this.salary = salary;
}
@override //同java中 重寫父類方法
void sayHello(){
super.sayHello(); //my name is:"ouyou" //super代表父類的方法
print('my salary is '+ this.salary.toString());
}
}
4) mixin多繼承與抽象類
void main(){
var p = new Person(12,'haha');
// p.age = 123;
p.sayHello(); //say hello in eat
p.sleep(); //sleep
p.eat(); //eat
p.have_a_baby(); //have a body
}
//類與混合都有相同的方法時(shí) 優(yōu)先使用類的方法
// 如果 類沒有該方法 混合的幾個(gè)有同名的方法時(shí) with 最后面的生效
class Eat {
void eat(){
print('eat');
}
void sayHello(){
print('say hello in eat');
}
}
class Sleep {
void sleep(){
print('sleep');
}
void sayHello(){
print('say hello in sleep');
}
}
abstract class Animal{ //抽象類
void have_a_baby(); //抽象方法 不一定實(shí)現(xiàn) 設(shè)想 讓繼承的類 實(shí)現(xiàn)
}
class Person extends Animal with Sleep,Eat { //with 多繼承 混合
int age;
String name;
//構(gòu)造函數(shù)
Person(int age , String name){
this.age = age;
this.name = name;
}
@override
void have_a_baby() { //實(shí)現(xiàn)抽象類的方法
print('have a body');
}
// void sayHello(){
// print('my name is:"' + this.name+'"'); //my name is:"haha"
// }
}