Dart 语言 大结局V1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoleizhanghahaha/article/details/89790370

----大结局第一版

//面向对象扩展
// 继承,继承中的构造方法
//抽象类
//接口
//Mixins,操作符的覆写
//----------------------------------------------------
// 使用关键字 extends 继承一个类
// 子类会继承父类的属性和方法,不会继承构造方法
// 子类能够复写父类的方法、getter 和setter
// 单继承,多态性
//import 'higthObj.dart';
//void main(){
////var student= new Student();
////student.age=20;
////student.name='tom';
////student.isAdult;
////student.run();
////student.study();
////默认父类是object
//Person person=new Student();//多态
//person.name="zhangsan";
//if(person is Student){
//  person.study();
//}
//print(person);
//}
//class Student extends Person{
//  void study(){
//    print("Student study ...");
//  }
//  @override
//  bool get isAdult => age>15;//复写父类的方法 get set
//}
//----------------------------------------------------
//继承中的构造方法
//子类的构造方法默认会调用父类的无名无惨构造方法 Person(){}
//如果父类没有无名无参构造方法,则需要显示调用父类构造方法
//在构造方法参数后使用: 显示调用父类构造方法
// 构造方法的执行顺序
// 父类的构造方法在子类构造方法体开始执行的位置调用
//如果有初始化列表,初始化列表会在父类构造方法前执行
//void main(){
//var student=new Student("zhangsan","男");
//print(student.name);
//print(student.gender);
//}
//class Person{
//  String name;
//  Person(this.name);
//  Person.withName(this.name);
//}
//class Student extends Person{
//  int age;
//final String gender;
////  Student(String name) : super(name);//显示调用
////  gen 初始化参数
//  Student(String name,String gen):gender=gen, super.withName(name);//显示调用
////  Student.withName(String name) : super.withName(name);//显示调用
//}
//----------------------------------------------------
//抽象类
// 抽象类使用abstract 表示,不能被实例化
// 抽象方法不用abstract 修饰,无实现
// 抽象类可以没有抽象方法
// 有抽象方法的类一定得声明为抽象类
//void main(){
//var person= new Student();
//person.run();
//}
//abstract class Person{
//   void run();//抽象方法
//}
//class Student extends Person{
//  @override
//  void run() {
//print("run ...");  }
//
//}
//----------------------------------------------------
//接口
//类和接口是统一的,类就是接口
//每个类都隐式定义了一个包含所有实例成员的接口
// 如果是复用已有类的实现,使用继承 extends
// 如果只是使用已有类的外在行为,使用接口 implements
//void main (){
//var student= new Student();
//}
//class Person{
//  String name;
//  int  get age => 18;
//  void run (){
//    print("Person run ...");
//  }
//}
//class Student extends Person{ // 继承
//
//}

//class Student implements Person{//接口
//  @override
//  String name;
//
//  @override
//  // TODO: implement age
//  int get age => null;
//
//  @override
//  void run() {
//    // TODO: implement run
//  }
//
//}
//void main(){
//  var student=new Student();
//  student.run();
//}
//abstract class Person{
//  void run();
//}
//class Student implements Person{
//  @override
//  void run() {
//   print("student run ...");
//  }
//
//}
//----------------------------------------------------
// Mixins
// Mixin 类似于多继承,是在多继承中重用一个类代码的方式
// 作为Mixin 类不能有显示声明构造方法
// 作为 Mixin的类只能继承自 object
// 使用关键字with 连接一个或多个mixin
//void main(){
//var d=new D();
//d.a();
//}
//class A{
//  void a(){
//    print("A.a()...");
//  }
//}
//class B{
//  void a(){
//    print("B.a()...");
//  }
//  void b(){
//    print("B.b()...");
//  }
//}
//class C{
//  void a(){
//    print("C.a()...");
//  }
//  void c(){
//    print("C.c()...");
//  }
//}
////class D extends A with B,C{
////  //多继承 如果三个 类有同样的a方法,会调用C 中的a方法
////}
//class D =A with B,C;// 简化写法

//----------------------------------------------------
//操作符覆写
//覆写操作符需要在类中定义
//返回类型 operator 操作符(参数1,参数2,...){
//  实现体..
//  return 返回值
//}
//如果覆写 == ,还需要覆写 对象的hashCode getter 方法
//参照官方 操作符
//void main(){
// var person1=new Person(18);
// var person2=new Person(20);
// print(person1>person2); //实现操作符
//  person1.age;
//  print(person1['age']);
//}
//class Person{
//  int age;
//  Person(this.age);
//  bool operator >(Person person){
//    return this.age > person.age;
//  }
//  int operator [] (String str){
//    if("age" == str){
//      return age;
//    }
//    return 0;
//  }
//}

//----------------------------------------------------
// 枚举
// 枚举是一种有穷序列集的数据类型
// 使用关键字 enum 定义一个枚举
// 常用于代替常量,控制语句等
//const spring=0;
//const summer=1;
//const autumn=2;
//const winter=3;
//void main(){
//  var currentSeason=Season.spring;
//  print(currentSeason.index);
//  switch ( currentSeason ){
//    case Season.spring:
//      print("1-3月");
//      break;
//    case Season.summer:
//      print("4-6月");
//      break;
//    case Season.autumn:
//      print("7-9月");
//      break;
//    case Season.winter:
//      print("10-12月");
//      break;
//  }
//}
//
//enum Season{
//  // dart 枚举特性
//// index 从0开始,依次累加
////  不能指定原始值
////  不能添加方法
// spring,
// summer,
// autumn,
// winter,
//}
//----------------------------------------------------
//泛型
// dart中类型是可选的,可使用泛型限定类型
// 使用泛型能够有效的减少代码重复
void main(){
  var list= new List<String>();// 设定类型只能一种,默认为动态
//  list.add(1);
  list.add("1");
//  var utils= new Utils(); //类级别的泛型
//  utils.put("sss");
//  utils.put(5);

//  var utils= new Utils<String>(); //类级别的泛型
//  utils.put("sss");

//  var utils= new Utils<int>(); //类级别的泛型
//  utils.put(5);

// var utils =new Utils(); //方法级别的泛型
// utils.put<String>("123");

//  var utils =new Utils(); //方法级别的泛型
//  utils.put<int>(1);
}
// 泛型的使用
// 类的泛型
// 方法的泛型
//class Utils{
//  int element;
//  String elementStr;
//  void putInt(int element){
//    this.element =element;
//  }
//  void putString(String element){
//    this.elementStr =element;
//  }
//}

//class Utils <T>{  //类级别的泛型
//  T element;
//  void put(T element){
//    this.element =element;
//  }
//}

class Utils {  //方法级别的泛型
 void put <T> (T element){
   print(element);
}}

猜你喜欢

转载自blog.csdn.net/xiaoleizhanghahaha/article/details/89790370