java中dart类详细讲解
dart是一个面向对象的语言;面向对象有
- 继承
- 封装
- 多态
dart的所有东西都是对象,所有的对象都是继承与object类
一个类通常是由属性和方法组成的
在dart中如果你要自定义一个类的话,将这个类放在main函数外面
类名使用大驼峰方法名使用小驼峰
1.定义这个类的属性和方法
//定义一个类的属性和方法 classPerson{ Stringname='张三'; intage=19; voidgetInfo(){ //print('我叫$name,今年$age');第一种 //推荐使用这样的写,通过this去访问 print("${this.name}====${this.age}"); } } //使用类中的属性和方法 voidmain(){ //调用Perso这个类首先需要实例化这个类 //Personp=newPerson();//等价varp=newPerson varp=newPerson(); print(p.age); p.getInfo(); }
2.改变类中的属性和方法
classPerson{ Stringname='张三'; intage=19; voidgetInfo(){ //推荐使用这样的写法 print("${this.name}====${this.age}"); } //限制类型,更改类中的属性和方法 SetUserinfo(intage){ this.age=age; } } voidmain(){ //调用Perso这个类首先需要实例化这个类 Personp=newPerson();//等价varp=newPerson print(p.age);//19 p.getInfo();//张三====19 p.SetUserinfo(100); p.getInfo();//张三====100 }
3.默认构造函数
classPerson{ //这是一个默认构造函数 Person(){ print('默认构造函数里面的内容,该方法在实例化的时候会自动出发哈'); } } voidmain(){ //实例化的时候,会自动触发默认构造函数 Personp=newPerson();//等价varp=newPerson }
4.动态传递,类多次实例化,打印不同的值
classPerson{ Stringname; intage; Person(Stringname,intage){ this.name=name; this.age=age; } voidgetuserInfo(){ print(this.name); print(this.age); } } voidmain(){ //实例化的时候,会自动触发 Personp=newPerson('张三',10);//等价varp=newPerson p.getuserInfo(); //这个类可以实例化多次的哈 Personv=newPerson('张三1',100);//等价varp=newPerson v.getuserInfo(); }
5.默认构造函数简写
classPerson{ Stringname; intage; //Person(Stringname,intage){ //this.name=name; //this.age=age; //} //上面注释的代码等价于Person(this.name,this.age); Person(this.name,this.age); voidgetuserInfo(){ print(this.name); print(this.age); } }
6.命名构造函数,命名构造函数是可以写多个的;但是默认构造函数只能写一个
classPerson{ //我是默认的构造函数 Person(){ print('我是默认的构造函数'); } //命名构造函数 Person.mynow(){ print('我是命名构造函数'); } } voidmain(){ //实例化的时候,会默认构造自动触发 Personp=newPerson();//等价varp=newPerson Personv=newPerson.mynow();//触发命名构造函数 }
7.类抽离出去,单独放一个文件夹中
在项目的根目录创建一个文件夹lib 在lib文件夹中创建一个文件xxx.dart内容如下 classPerson{ //我是默认的构造函数 Person(){ print('我是默认的构造函数'); } //命名构造函数 Person.mynow(){ print('我是命名构造函数'); } } 在需要的某个文件中引入 import'lib/xxx.dart'; voidmain(){ //实例化的时候,会默认构造自动触发 Personp=newPerson();//等价varp=newPerson Personv=newPerson.mynow();//触发命名构造函数 }
8.dart修饰符
dart和其他面向对象的语言不一样。没有向publicprivate这样的访问修饰符
但是我们可以使用_把一个属性或者方法定义成私有的,(就是在变量或者方法的前面添加_;并且要单独把他抽离出去变成一个文件放在lib目录下,这样外面就不能够访问了);
但是个人觉得这种没有实质的意义如果要访问这个私有的方法,那么在类种添加一个共有的方法;去访问这个私有的方法;访问在return回去;就可以访问这个私有的方法了私有方法,只有在当前类中访问哈在lib目录下的animal.dart文件;
内容如下
classAnimal{ String_name='dog';//这是私有的方法,只当前这个类可以访问;其他类是不能够访问的哈~; //如果非要访问这个类,可以通过共有方法来访问 //通过公共方法来访问这个类;间接访问 getName(){ print(this._name); } intage=19; voidgetInfo(){ //推荐使用这样的写法 print("${this._name}====${this.age}"); } //限制类型,更改类中的属性和方法 SetUserinfo(intage){ this.age=age; } }
9.计算矩形的面积将他改为get方法
classRect{ numwidth; numheight; Rect(this.width,this.height); getUserINfo(){ return(this.width*this.height); } } voidmain(){ //实例化的时候,会默认构造自动触发 Rectp=newRect(10,4);//等价varp=newPerson print(p.getUserINfo()); } 将上面的代码改为get方法 classRect{ numwidth; numheight; Rect(this.width,this.height); //getUserINfo(){ //return(this.width*this.height); //} //将上面的代码该为get getgetUserINfo{ return(this.width*this.height); } } voidmain(){ //实例化的时候,会默认构造自动触发 Rectp=newRect(10,4); //print(p.getUserINfo()); //将上面的代码改为get方法的调用 print(p.getUserINfo);//调用的时候直接通过访问属性的方式访问方法 }
10.dart中的set方法
classRect{ numwidth; numheight; Rect(this.width,this.height); //设置值的时候。我们使用了set方法 setareaHeight(value){ this.height=value; } getarea{ returnthis.height; } } voidmain(){ //实例化的时候,会默认构造自动触发 Rectp=newRect(10,4); p.areaHeight=6;//当一个类的内部使用了set方法的时候。我们直接使用赋值; print(p.area);//内部使用了get我们这直接通过属性获取值 }
11.在实例化之前,给类内部初始化数值
classRect{ numwidth; numheight; //在实例化之前,给类内部初始化数值 Rect() :height=2, width=10{} getarea{ returnthis.height*this.width; } } voidmain(){ //实例化的时候,会默认构造自动触发 Rectp=newRect(); print(p.area);//内部使用了get我们这直接通过属性获取值 }
到此这篇关于dart类详细讲解的文章就介绍到这了,更多相关dart类讲解内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!