持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
今日目标
今天的主要目标是学习了解Dart中的类、对象这一概念
面向对象编程
面向对象编程的三个基本特征: 封装、继承、多态
封装:封装是类和对象的主要特性,把客观事物粉装成抽象的类,并且把自己的部分属性和方法提供给其他对象
继承:面向对象编程(OOP)语言的一个主要功能就是“继承”,它可以使用现有类的功能,并且可以扩展这些功能
多态:允许将子类类型的指针赋值给父类类型的指针,同一个函数调用会有不同的效果
Dart所有的东西都是对象,所有的对象都继承自Object类.
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
一个类通常由属性和方法组成
类
像List,Map,Set这些都是Dart内置好的类,那如何自定义一个类呢?
在Dart中定义一个类通过Class关键字来实现\
Tips:定义一个类的时候,首字母要大写
class Person {
String name='你太有才了';
int like=100;
void sayHello(){
print('$name----hello');
print('${this.name}----hello1');
}
}
如上我们就定义号了一个Person类,在使用这个类的时候要先进行实例化。
var p1 = new Person();
print(p1.name);
p1.sayHello();
像我们在实例化 list的时候可以指定一个类型,自定义的类实例化时也可以指定类型
List newlist = new List();
Person newPerson = new Person();
像js中一样我们也可以通过方法去修改实力里的一些属性
class Person {
String name='你太有才了';
int like=100;
void sayHello(){
print('$name----hello');
print('${this.name}----hello1');
}
void setLike(int like){
this.like = like;
}
}
Person a = new Person();
a.setLike(1000);
print(a.like);
类的构造函数
是我们在实例化的时候自动触发的一个方法就叫构造函数
在dart中构造函数默认和类是同名的方法
class Person{
Person(){
print('构造函数触发');
}
}
class Person{
var name;
var like;
Person(name, like){
this.name = name;
this.like = like;
}
void sayHello(){
print('${this.name}---hello, like: ${this.like}');
}
}
Person p1 = new Person('你太有才了', 200);
p1.sayHello();
如上代码我们就在实例化的时候通过传参来设置Person里面的属性值
构造函数的简写方式:
class Person{
Person(this.name, this.like);
}
在类里可以写多个命名函数
class Person{
Person(this.name, this.like);
Person.now(){
print('这是一个命名函数');
}
}
new Person.now();
类的单独抽离
通常项目中我们会定义很多类,如果写在同一个dart文件里就会很臃肿且变得不可维护,这个时候我们就可以把类单独抽离出来一个dart文件,在需要用到的放引入就可以了。
这样做的好处可以实现模块化和多人开发。
在Dart里面时没有类似public,private,protected这些修饰符的。
但是可以通过 _ 将一个属性或者方法定义成私有的。注意这个时候需要将类抽离成一个单独的文件,否则私有时不生效的。私有属性可以设定一些共有的方法来让外部访问到。
get&set
class Sum {
var num1;
var num2;
Sum(this.num1, this.num2);
int get getSum{
return this.num1 + this.num2;
}
set setnum2 (int num) {
this.num2 = num;
}
}
Sum sum = new Sum(1,2);
print(sum.getSum);
sum.setnum2 = 3;
print(sum.getSum);
如上我们就使用到了get和set,要注意这里是直接通过属性来调用的而不是方法
类中的初始化列表
Dart中我们也可以在构造函数的体运行之前初始化实例变量
class Person{
var name;
var like;
Person():name='你太有才了',like=12{}
}
print(new Person().name);
Ending
持续学习,加油,如有不对的地方还请指正,谢谢~~