热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter系列1Dart的面向对象

Dart语言是一种面向对象的语言.\x0a一起来看看它如果实

Dart语言中的面向对象

Dart
中的类使用 class
来修饰。所有的类都继承于 Object
对象. 同 Java
一切皆对象.

class User {

String name;
int age;
}

下面,我准备从五个方面来介绍:

  • 类以及类的构造方法
  • getters
    /setters
  • 继承
  • 抽象类和接口
  • Mixins

类以及类的构造方法

上面列了一个最简单的类,我们给它加上构造方法

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
    表示,不能直接被实例化
  • 抽象方法不能用abstract
    修饰,无实现
  • 抽象类可以没有抽象方法
  • 有抽象方法的类一定得声明为抽象类

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
    类似于多继承, 重用一个类代码的方式。
  • 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中的异步编程.

我是小白,期待你的关注在看~





推荐阅读
author-avatar
青春进行时2502857343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有