对象的行为

114 阅读6分钟

对象的行为

    1.在对象的方法定义的时候,方法的声明部分(方法签名),不要写static

    2.方法的调用仍然满足“方法调用栈”的特性,先进后出。
    
       这里的栈指的是方法调用和结束的顺序是满足数据结构中“栈”的概念 --- 先进后出。

    3. 方法结束的方式:

       3-1、正常结束 -- 不管带不带返回值,只要是这个方法正常执行,直到遇到方法的
    
            结束"}" 或 “return” 语句,都是正常结束的。

       3-2、异常结束 -- 方法在执行过程中发生了问题,执行不下去了,被强制结束。

            但不管是正常结束还是异常结束,方法的流程都是返回到方法调用处。

    4. 方法的签名:

       访问修饰符 可选修饰符 返回类型 方法名(参数列表)

           访问修饰 --- 肯定要有,不写也有默认,默认不是public,是一种独立情况

           返回类型 --- 可以返回任意数据类型: 基本数据类型、String、自定义类型、

           数组类型均可。 返回也是返回“值”,只不过基本数据类型的值就是数据值本身,

           而引用数据类型的值就是它的引用。

           如果没有返回,那么也要写一个void

       方法名

           参数列表 -- 指的是形参列表,语法就是变量声明的语法

    5. 重载方法 -- 一个类可以拥有多个同名的方法,要求是参数列表不同,
    
       包括:参数个数、参数的类型、参数的顺序,跟参数名无关。

构造器 -- 构造方法 -- Constructor

    基本知识点

       构造器是在类定义当中除属性和行为之外的第三种内容。

       引入:当我们产生对象的时候,书写了如下代码

       new 类名();

       其中new是一个关键字,而后面的"类名()"的形式 非常像再调用一个方法。 
    
    只是特殊之处在哪里呢?

       1. 这个方法的名字就是类名;

       2. 我们没有给这个方法传参。但是Scanner在new的时候是可以传参的。

    因此 new 后面接的就是一个方法的调用指令。

    这个方法就是“构造方法”。

构造方法的作用:

    1、产生对象;

    2、通过接受外部参数,对对象的属性进行初始化。

构造方法的语法特殊性:

    1. 程序员可以在类当中不定义构造方法, 那么Java会给我们自动生成一个
    
       “公共的无参的”构造方法,保证我们的基本使用;

    2. 如果我们要自定义构造方法,那么需要注意

       2-1、构造方法的名字必须和类名保持一致;

       2-2、构造方法没有返回类型,连void都没有;

       2-3、构造方法的访问修饰符和参数列表可以根据具体问题域具体设计。

    3. 一旦自定义了构造方法,那么Java将不再给我们生成那个默认的“公共无参”构造;

构造方法的执行步骤:

    一旦new了一个构造方法,它的执行步骤如下:

        首先,在内存的堆当中划分了对象存放的空间,这个空间多大呢?

        依赖于我们给这个类定义了多少内容。

        然后,在该空间划分属性,并对属性进行初始化;

        最后,执行程序员在构造方法当中所书写的代码。

    其中,头两件事情是构造方法自己做的,我们无需用代码表达,
    
    我们只需要书写第三个步骤的内容即可。

相关知识点 -- this()

    this() -- 用来让一个构造方法可以共享另一个构造方法的代码

语法特殊性:

    1this()只能写在构造方法里面;

    2this()只能写在构造方法的第一句;这也导致一个构造只能共享一次其他构造的代码;

    3、如果一个类里面有多个构造方法,this()是依赖于它的参数去匹配到底调用的是哪个构造方法;

    4、构造方法不允许递归调用,不能用this()访问自己。

 

属性的访问器和修改器 -- getter/setter

       所谓的public,指的是公共,那么就意味着在外部的使用者是可以在任意
    
    位置对类的内容做任意操作的。

       在实际问题域当中,对象身上的属性其实很少有public修饰的,因为用
   
    public修饰不仅仅意味着外部的其他对象可以访问这个属性,同时也意味着
    
    外部的其他对象可以任意修改属性。

       通常只有常量属性,我们愿意设计为public,为什么?反正外部也修改不了,
       
    只能获取值。

 

修改器(setter方法)和访问器(getter方法)

    其作用就是为了能够让外部使用我们在类当中被设计为private的这些属性。

    语法:

    访问器

    public 被访问的属性的类型get被访问的属性名(){

     return 被访问的属性;

    }

    修改器

    public void set被访问的属性名(属性类型 属性名){

    this.属性名 = 属性名;

    }

    主要体现在以下三点:

       1、我们能够通过为某个private属性 单独提供get方法 或 set方法,让
       
    这个属性对外部而言是“只读”的,或“只写”的;这是把属性设计为public
       
    做不到的。

       2、如果我们直接把属性设置为public,外部可以对这个属性赋任意数据
          
    值(只要满足类型匹配,但不能考虑有效性匹配),除非外部每一次赋值的时
      
    候都去做判断;而如果设计为private属性,然后提供set方法,那么外部只
    
    能通过set方法给该属性赋值,而我们可以在set内部通过代码进行有效性验证。
    
    这样把验证有效数据的控制权掌握在一个地方,而不是散在每一次赋值的地方。

       3、不直接暴露我们类内部对数据的存放形式,比如 学生类身上的生日属性,
    
    在类内部其实设计为年月日三个int,但由于是私有的,外部看不到,只能看到
    
    我统一提供的一个叫做getBirthday的方法,获取最终结果。

Java标准类

    Java标准类,又名“Java Bean”,也被叫做“Bean类”。
    
       JavaBean类是SUN公司在95年的“技术白皮书”当中提出,只有满足这些规范的
    
    类才能称之为“JavaBean”。Java是一门工程学的编程语言,它最大的特点就是建
    
    立庞大的项目,所以标准是很重要的。
    
       所有的框架/工具,几乎都要求书写Java标准类,不满足要求的根本不能在这
       
    些框架和工具当中运行起来。

Java标准类的规范如下:

    1、必须提供公共无参构造;

    2、必须为私有属性提供符合命名规范的get/set方法;

    3、应该实现Serializable接口