Dart语言中的面向对象
Dart
中的类使用 class
来修饰。所有的类都继承于 Object
对象. 同 Java
一切皆对象.
class User {
String name;
int age;
}
下面,我准备从五个方面来介绍:
类以及类的构造方法
上面列了一个最简单的类,我们给它加上构造方法
class User {
String name;
int age;
User(this.name,this.age);
}
这样写的话,我们在初始化 User
对象的时候,必须写上所有的参数,否则会报错。在dart
中可以以这种方式来作为构造方法。
class User {
String name;
int age;
// User(this.name,this.age);
// 加了中括号。
User({this.name,this.age});
}
void main(){
// 这样也是可以的。
User user = new User(name:"fxb");
}
getter and setter
这个getter
和 setter
比较简单了。写一个例子,你就会看懂了。
class User {
String _name;
int _age;
User({this._name, this._age});
String get name => this._name;
set name(String name) => this._name = name;
int get age => this._age;
set age(age) = this._age = age;
}
void main(){
User user = new User({name:'方小白'});
user.age = 24;
print("姓名: ${user.name}, 年龄: ${user.age}");
}
继承
Dart
中继承的关键字是 extends
, 和java
中的是一样的,但是它没有 implements
关键字. 如下面的这个例子.
class Parent{
String name;
// 私有属性: 外号(别名)
String _alias;
String work() {
return "${name} is working.";
}
Parent({this.name});
// 或者这种写法也可以
//Parent.withName(this.name);
}
class Child extends Parent {
// 继承中子类实现父类的构造方法
Child({name}):super(name:name);
// 或者
// Child(this.name):super.withName(name);
void study(){
print("child is studying");
}
}
void main(){
Child child = new Child();
child.name = "Mr.fxb";
// 无法访问私有属性
// child._alias = "fxb_alias";
child.study();
// 父类引用执行子类方法。
Parent pChild = new Child();
if(pChild is Child){
pChild.study();
}
}
抽象类
关于抽象类记住下面这四句话就好了.(Dart
中的接口是类。但是可以实现(implements
)。)
abstract class Person {
void run();
}
abstract Class Human {
void jump();
}
abstrac class People {
void say();
}
class Woman extends People implements {
@override
void run(){
//dosomething
}
@override
void jump(){
//dosomething
}
@override
void say(){
//dosomething
}
}
Mixins(混入)
Mixins
类似于多继承, 重用一个类代码的方式。- 使用
with
关键字来实现, 可以minins
多个类。
以一个示例来说明:
Class First {
void printSth(){
print('im first printSth');
};
}
Class Second {
void printSth(){
print('im Second printSth');
};
void secondPrint(){
print('test');
}
}
Class A = Second with First;
main (){
A a = new A();
a.printSth(); //im first printSth
a.secondPrint(); // test
}
好了,关于面向对象的内容就写到这里。下一篇,我们说一下 Dart中的异步编程.
我是小白,期待你的关注与在看~