zoukankan      html  css  js  c++  java
  • Dart对象和类

    /*
    
    面向对象编程(OOP)的三个基本特征是:封装、继承、多态      
    
          封装:封装是对象和类概念的主要特性。封装,把客观事物封装成抽象的类,并且把自己的部分属性和方法提供给其他对象调用, 而一部分属性和方法则隐藏。
                    
          继承:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
                
          多态:允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效果 。
    
    
    Dart所有的东西都是对象,所有的对象都继承自Object类。
    
    Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
    
    一个类通常由属性和方法组成。
    
    */
    
    void main(){    
        
        List list=new List();
        list.isEmpty;
        list.add('香蕉');
        list.add('香蕉1');
    
    
    
    
    
        Map m=new Map();
        m["username"]="张三";
        m.addAll({"age":20});
        m.isEmpty;
    
        Object a=123;
        Object v=true;
        print(a);
        print(v);
    
    }
    /*
    
    Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
    
    */
    
    class Person{
      String name="张三";
      int age=23;
      void getInfo(){
          // print("$name----$age");
          print("${this.name}----${this.age}");
      }
      void setInfo(int age){
        this.age=age;
      }
    
    }
    void main(){
    
      //实例化
    
      // var p1=new Person();
      // print(p1.name);
      // p1.getInfo();
    
      Person p1=new Person();
      // print(p1.name);
    
      p1.setInfo(28);
      p1.getInfo();
      
    
    
    }
    // class Person{
    //   String name='张三';
    //   int age=20; 
    //   //默认构造函数
    //   Person(){
    //     print('这是构造函数里面的内容  这个方法在实例化的时候触发');
    //   }
    //   void printInfo(){   
    //     print("${this.name}----${this.age}");
    //   }
    // }
    
    //张三  李四  王五
    
    // class Person{
    //   String name;
    //   int age; 
    //   //默认构造函数
    //   Person(String name,int age){
    //       this.name=name;
    //       this.age=age;
    //   }
    //   void printInfo(){   
    //     print("${this.name}----${this.age}");
    //   }
    // }
    
    
    class Person{
      String name;
      int age; 
      //默认构造函数的简写
      Person(this.name,this.age);
      void printInfo(){   
        print("${this.name}----${this.age}");
      }
    }
    
    
    void main(){
      
      Person p1=new Person('张三',20);
      p1.printInfo();
    
    
      Person p2=new Person('李四',25);
      p2.printInfo();
    
    }
    /*
    dart里面构造函数可以写多个
    */
    class Person{
      String name;
      int age; 
      //默认构造函数的简写
      Person(this.name,this.age);
      
      Person.now(){
        print('我是命名构造函数');
      }
    
      Person.setInfo(String name,int age){
        this.name=name;
        this.age=age;
      }
    
      void printInfo(){   
        print("${this.name}----${this.age}");
      }
    }
    
    void main(){
    
    
      // var d=new DateTime.now();   //实例化DateTime调用它的命名构造函数
      // print(d);
    
    
      //Person p1=new Person('张三', 20);   //默认实例化类的时候调用的是 默认构造函数
    
      //Person p1=new Person.now();   //命名构造函数
      Person p1=new Person.setInfo('李四',30);
      p1.printInfo(); 
    
    }
    import 'lib/Person.dart';
    
    void main(){
    
      Person p1=new Person.setInfo('李四1',30);
      p1.printInfo(); 
    
    }

    Person.dart

    class Person{
      String name;
      int age; 
      //默认构造函数的简写
      Person(this.name,this.age);
      
      Person.now(){
        print('我是命名构造函数');
      }
    
      Person.setInfo(String name,int age){
        this.name=name;
        this.age=age;
      }
    
      void printInfo(){   
        print("${this.name}----${this.age}");
      }
    }

    /*
    Dart和其他面向对象语言不一样,Data中没有 public  private protected这些访问修饰符合
    
    但是我们可以使用_把一个属性或者方法定义成私有。
    
    */
    
    import 'lib/Animal.dart';
    
    void main(){
     
     Animal a=new Animal('小狗', 3);
    
     print(a.getName());
    
      a.execRun();   //间接的调用私有方法
     
    
    }
    class Animal{
      String _name;   //私有属性
      int age; 
      //默认构造函数的简写
      Animal(this._name,this.age);
    
      void printInfo(){   
        print("${this._name}----${this.age}");
      }
    
      String getName(){ 
        return this._name;
      } 
      void _run(){
        print('这是一个私有方法');
      }
    
      execRun(){
        this._run();  //类里面方法的相互调用
      }
    }
    // class Rect{
    
    //   int height;
    //   int width;
     
    //   getArea(){
    //     return this.height*this.width;
    //   } 
    // }
    
    
    // class Rect{
    //   num height;
    //   num width; 
      
    //   Rect(this.height,this.width);
    //   area(){
    //     return this.height*this.width;
    //   }
    // }
    
    // void main(){
    //   Rect r=new Rect(10,4);
    //   print("面积:${r.area()}");   
    // }
    
    // class Rect{
    //   num height;
    //   num width;   
    //   Rect(this.height,this.width);
    //   get area{
    //     return this.height*this.width;
    //   }
    // }
    
    // void main(){
    //   Rect r=new Rect(10,2);
    //   print("面积:${r.area}");      //注意调用直接通过访问属性的方式访问area
    // }
    
    class Rect{
      num height;
      num width; 
      
      Rect(this.height,this.width);
      get area{
        return this.height*this.width;
      }
      set areaHeight(value){
        this.height=value;
      }
    }
    
    void main(){
      Rect r=new Rect(10,4);
      // print("面积:${r.area()}");   
      r.areaHeight=6;
    
      print(r.area);
    
    }
    // Dart中我们也可以在构造函数体运行之前初始化实例变量
    
    class Rect{
    
      int height;
      int width;
      Rect():height=2,width=10{
        
        print("${this.height}---${this.width}");
      }
      getArea(){
        return this.height*this.width;
      } 
    }
    
    void main(){
      Rect r=new Rect();
      print(r.getArea()); 
       
    }
  • 相关阅读:
    Charles使用
    将当前项目加入系统变量中
    JVM之gc相关
    jdk安装
    nginx相关
    oracle带输入输出参数存储过程(包括sql分页功能)
    ajax 全局拦载处理,可加密、过滤、筛选、sql防注入处理
    01.Java关键字,常量,变量,数值类型
    01.Java数据结构和多线程
    02.MySQL.存储引擎-事务-隔离级别-锁
  • 原文地址:https://www.cnblogs.com/loaderman/p/11026722.html
Copyright © 2011-2022 走看看