Java面向对象

Posted on 2022-01-18 13:01  zhoumubaiyu  阅读(24)  评论(0编辑  收藏  举报

Java面向对象

  • 现实世界是由对象和对象之间相互作用共同组成的

  • 每个对象有自己的特有属性,也有自己专有的方法。外部对象想要调用这些方法,可以向他请求并传入参数,等方法结束后,返回结果

  • 对象=属性+方法

  • 对象的规范=属性定义+方法定义

Java中,引入对象和类的概念

  • 对象是一个变量(具体的东西)

  • 类就是类型(是规范,是定义),从万千对象中抽取共性

  • 类规定了对象应该有的属性内容和方法

  • 对象是类的具体实现,是活生生的

  • 例如:土豆丝菜谱是类,一盘土豆丝是对象

 

  • 从程序发展的角度来理解,OO(Oriented Object)是对OP(Orirnted Procedure)的一种改进

  • OP的典型代表是C和Pascal。更强调方法动作,所有的变量是被动参与进来的,没有自主决定权

  • OO的方法属于每个对象的。能否实现是由每个对象说了算的,有主人翁精神

  • 计算机的发展和社会发展也是相似之处

    • 更强调方法的执行主体

    • 增加类型的重用部分(内容和行为)

 

  • 变量定义的变迁:更加功能强大

  • 基本类型(一种变量)=》结构体(多种变量捆绑)=》类(多种变量+方法)

  • 类可以继承:子类可以继承父类所有内容(不能直接private成员)

    • 基本类型无法做到

    • 结构体只能做到全包含,不能控制包含粒度

  • 基本变量例子:int a; float b;

  • 结构体变量例子

    //c语言结构体不能包含函数
    struct Simple{
      int a;
      double b;
    };  //成员默认均为public
    

     

    struct Complex
    {
      char c;
      struct Simple foo;
      //Complex必须包含simple所有内容
    }
    

    类/对象例子

  • public class Father{
      private int money = 100;
      long mobile = 13999999999L;
      
      public void hello(){
        System.out.println("Hello");
      }
    }
    
    public class Son extends Father{
      public void hi(){
        //子类可以扩展自己的成员方法
        System.out.println("hi~~~~~");
      }
      
      public static void main(String[] a){
        Son s = new Son();
        System.out.println(s.moblie);//Son没有定义moblie,而是通过父类继承的
        //System.out.println(s.money);//error 父类的money是私有的,子类无法直接访问
        s.hello();  //Son没有定义f1,而是通过父类继承的
        s.hi();     //Son可以自定义自己的成员方法
      }
    }
    

     

      • OO最早的始于Simula 67,成形于20世纪20年代Smalltalk

      • 当前最主要的代表是C++和Java

      • 面向对象语言主要特点

        • 识认性:辨识、认定对象

        • 类别性:归类对象

        • 多态性:同类的对象有共性,也有差异

        • 继承性:子类继承父类所有的东西