• Java-类与对象


    1,类的定义
      描述实体的抽象概念,属性及行为相似的对象可以归成一个类。
      在软件中,类就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。类是创建对象的模板,对象是类的实例。

      声明形式:

      [public] [abstract | final] class 类名称  [extends 父类名称]  [implements 接口名称列表]  {

            数据成员声明及初始化;

           方法成员声明及方法体;

        }

      关键字:
        class:表明其后声明的是一个类。
        extends:如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
        implements:如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后
      类修饰符:可以有多个,用来限定类的使用方式
        public:表明此类为公有类
        abstract:指明此类为抽象类
        final:指明此类为终结类 
      类声明体
        数据成员声明及初始化
          可以有多个
        方法成员声明及方法体
          可以有多个
      数据成员
        表示Java类的状态
        声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性
        在一个类中成员变量名是唯一的
        数据成员的类型可以是Java中任意的数据类型(基本类型,类,接口,数组)
      方法成员

      定义类的行为
        一个对象能够做的事情
        我们能够从一个对象取得的信息
        可以没有,也可以有多个;
        分为实例方法和类方法(静态方法)
     
    类成员的访问控制:

      public:这些成员能被所有的类访问
      protected:这些成员只能被类本身,派生类或者同一个包下的类访问。
      private:这些成员除了类本身外任何类不允许访问。
      default:不加任何访问控制保留字,这些成员只能被类本身或同一个包下的类访问。
     
    2,类的特殊成员

      构造方法:构造方法的名字和类名相同,并且没有返回值(连void都不允许)。构造方法主要用于为类的对象定义初始化状态。我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。

      静态数据成员:静态成员以static关键字修饰,如:

            Class Person{
                staticint name;

                public static void getName(){……};

             }

      静态方法和静态变量是属于某一个类,而不属于类的对象,不管对象有多少,静态成员在内存中只存在一份拷贝,所有对象共享同一份静态成员。
      静态方法和静态变量的引用可以直接通过类名引用,而不需要经过类的实例化。如:Person.name; Person.getName();
      在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。
     
      final数据成员:final数据成员类似于C++中的const数据,以及C中宏定义。final数据成员一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的。
     
      final方法成员:派生类只能从父类继承final方法,但是不能覆盖该final方法。当一个方法提供的功能已经满足要求,不需要再进行扩展,或者不想被子类覆盖时,可以将方法声明为final。
     

      抽象方法和抽象类

        在类中没有方法体的方法,就是抽象方法。
        含有抽象方法的类,即为抽象类。
        如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。
        我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
        

    构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法

      

  • 相关阅读:
    java的泛型
    JAVA集合类--(一闪而过)
    java面向对象- -一闪而过
    进制转换之二进制与十进制转换
    跳跃表-原理及Java实现
    Excel二次开发相关代码
    程序员学炒股(7) 股市心得
    程序员学炒股(7) 股指期货收盘价对第二天开盘价有影响吗?
    程序员学炒股(6) 让我们来看一下7月份A股的表现
    程序员学炒股(5) 股指交割日效应是否存在?
  • 原文地址:https://www.cnblogs.com/lzhat/p/4311143.html
Copyright © 2020-2023  润新知