dart类详细讲解
dart 是一个面向对象的语言;面向对象有 (1)继承 (2)封装 (3)多态
dart的所有东西都是对象,所有的对象都是继承与object类
一个类通常是由属性和方法组成的哈;
在dart中如果你要自定义一个类的话,将这个类放在main函数外面哈
类名使用大驼峰
方法名使用小驼峰
1 定义这个类的属性和方法
class Person {
String name = '张三';
int age = 19;
void getInfo() {
print("${this.name}====${this.age}");
}
}
void main() {
var p = new Person();
print(p.age);
p.getInfo();
}
2 改变类中的属性和方法
class Person {
String name = '张三';
int age = 19;
void getInfo() {
print("${this.name}====${this.age}");
}
SetUserinfo(int age) {
this.age = age;
}
}
void main() {
Person p = new Person();
print(p.age);
p.getInfo();
p.SetUserinfo(100);
p.getInfo();
}
3默认构造函数
class Person {
Person() {
print('默认构造函数里面的内容,该方法在实例化的时候会自动出发哈');
}
}
void main() {
Person p = new Person();
}
4 动态传递,类多次实例化,打印不同的值
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
void getuserInfo() {
print(this.name);
print(this.age);
}
}
void main() {
Person p = new Person('张三', 10);
p.getuserInfo();
Person v = new Person('张三1', 100);
v.getuserInfo();
}
5默认构造函数简写
class Person {
String name;
int age;
Person(this.name, this.age);
void getuserInfo() {
print(this.name);
print(this.age);
}
}
6命名构造函数,命名构造函数是可以写多个的;但是默认构造函数只能写一个
class Person {
Person() {
print('我是默认的构造函数');
}
Person.mynow() {
print('我是命名构造函数');
}
}
void main() {
Person p = new Person();
Person v = new Person.mynow();
}
7将类抽离出去,单独放一个文件夹中
在项目的根目录创建一个文件夹 lib
在lib文件夹中创建一个文件 xxx.dart内容如下
class Person {
Person() {
print('我是默认的构造函数');
}
Person.mynow() {
print('我是命名构造函数');
}
}
在需要的某个文件中引入
import 'lib/xxx.dart';
void main() {
Person p = new Person();
Person v = new Person.mynow();
}
8dart修饰符
dart和其他面向对象的语言不一样。没有向public private 这样的访问修饰符
但是我们可以使用_把一个属性或者方法定义成私有的哈;
(就是在变量或者方法的前面添加_;并且要单独把他抽离出去变成一个文件 放在lib目录下,这样外面就不能够访问了);
但是个人觉得这种没有实质的意义
如果要访问这个私有的方法,那么在类种添加一个共有的方法;去访问这个私有的方法;访问在return回去;
就可以访问这个私有的方法了
私有方法,只有在当前类中访问哈
在lib目录下的animal.dart文件;内容如下
class Animal {
String _name = 'dog';
getName(){
print(this._name);
}
int age = 19;
void getInfo() {
print("${this._name}====${this.age}");
}
SetUserinfo(int age) {
this.age = age;
}
}
9 计算矩形的面积将他改为get方法
class Rect {
num width;
num height;
Rect(this.width, this.height);
getUserINfo() {
return (this.width * this.height);
}
}
void main() {
Rect p = new Rect(10, 4);
print(p.getUserINfo());
}
将上面的代码改为get方法
class Rect {
num width;
num height;
Rect(this.width, this.height);
get getUserINfo {
return (this.width * this.height);
}
}
void main() {
Rect p = new Rect(10, 4);
print(p.getUserINfo);
}
09dart 中的set 方法
class Rect {
num width;
num height;
Rect(this.width, this.height);
set areaHeight(value) {
this.height = value;
}
get area {
return this.height;
}
}
void main() {
Rect p = new Rect(10, 4);
p.areaHeight = 6;
print(p.area);
}
10在实例化之前,给类内部初始化数值
class Rect {
num width;
num height;
Rect()
: height = 2,
width = 10 {}
get area {
return this.height * this.width;
}
}
void main() {
Rect p = new Rect();
print(p.area);
}