JavaSe基础(6)-- 方法

来源:互联网 发布:网络游戏音乐大全 编辑:程序博客网 时间:2024/06/07 20:03

day06 方法


  • 访问权限
  • 方法
  • setter getter this
  • 构造方法
  • 方法的重载

访问权限

面向对象编程三大特征之一 封装

  • 什么是封装?

    对象的一种保护机制,隐藏对象的属性和实现细节,仅对外提供公共访问方式。

    白话: 该露的露,该藏的藏

    专业: 我们程序设计要追求“高内聚,低耦合”。

    高内聚:就是类的内部数据操作细节自己完成,不允许外部干涉;

    低耦合:仅暴露少量的方法给外部使用

    耦合: 程序的一部分对另一部分的依赖关系

  • 目的:

    隐藏一个类的实现细节, 便于调用者调用

    防止对封装数据的未经授权的访问,有利于保证数据的完整性

    便于修改,增强代码的可维护性

  • 封装原则:

    将不需要对外提供的内容都隐藏起来。

    把属性都隐藏,提供公共方法对其访问

  • 示例:

    /*人:属性:    年龄。行为:    说话。*/class Person{    int age;    void speak()    {        System.out.println("age="+age);    }}class  PersonDemo{    public static void main(String[] args)     {        Person p = new Person();//        p.age = 20;  //可以          p.age = -20;   //???    }}

    p.age = -20;这个是不是不太合适啊。

    我们在对事物进行描述的时候,要符合事物的特点?年龄没有负数的啊

    那为什么会发生这种现象?我们只用到了这种类型中的一部分。

    那么该怎么办?

    我们要对这样的数据进行控制?

    出现这种现象是因为,这个age在被其他程序创建对象后,直接访问了,这样造成了安全隐患。
    那么就不让他访问?我们使用private(私有的意思)关键字进行限定

    class Person{    private /*私有*/int age;    public void live(int a)    {        if(a>0 && a<130)        {            age = a;            speak();        }        else            System.out.println("错误的数据");    }    void speak()    {        System.out.println("age="+age);    }}class Person{    private /*私有*/int age;    public void setAge(int a)//setXxx getXxx    {        age = a;    }    public int getAge()    {        return age;    }    void speak()    {        System.out.println("age="+age);    }}

  • private:私有,是一个权限修饰符。用于修饰成员。
  • 私有的内容只在本类中有效。
  • 注意:私有仅仅是封装的一种体现而已。

修饰符(modifier)

  • 在类、类的属性以及类的方法前面加修饰符可限定其访问权限,实现其在一定范围内的信息隐藏。

default不是一个修饰符,而是表示一种不加任何修饰符时的状态Protected同一个包的正常类,可以直接用他的实例进行访问 不同包的正常类,无法访问任何属性和方法 不同包的子类,不能使用父类实例的属性和方法 不同包的子类,不能使用其它包的子类实例的属性和方法 不同包的子类,可以直接使用父类的属性和方法 总之,不同包的子类就规规矩矩的在自己的代码里用父类的属性就行了。其它的使用都是不允许的。

方法

  • 什么是函数?

    函数就是定义在类中的具有特定功能的一段独立小程序。

    函数也称为方法。

  • 函数的格式:

    饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,){        执行语句;        return 返回值;}
  • 返回值类型:函数运行后的结果的数据类型。跟返回值的数据类型有关系。 如果没有返回值的话,则使用void

  • 方法名称:其实就是功能的名称, 那么名称可以根据功能来定义。不要使用aaa、bbb等不明确的名称
  • 参数类型:是形式参数的数据类型。
  • 形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

    当在逻辑中 含有未知的数据参与 运算的时候 才需要参数列表

    (实际参数:传递给形式参数的具体数值。)
  • return:用于结束函数, 将返回值 返回给调用者。

    当没有返回值的时候 ,我们可以直接写 return ; 即可,但是此种情况 通常可以省略不写。
  • 返回值:该值会返回给调用者。

  • 案例:
  • 用于计算两数之和,两个数是否相等,乘法表
  • 定义方法用于输出换行

需求1: 定义一个功能,完成两个整数的和的获取。

思路:既然定义功能,就是可以用函数来体现。    如何定义一个函数呢?    通过两个明确来完成。明确一:这个功能的结果是什么?    是和。是功能的结果,所以该功能的返回值类型是int 。    其实就是在明确函数的返回值类型。明确二:这个功能实现过程中是否需要未知内容参与运算?    有,加数和被加数。这就是函数的参数列表(参数的个数,参数的类型)    其实就是在明确参数列表。注意:返回值类型和参数类型没有直接关系。*/public static int add(int a,int b){    int sum = a+b;    return sum;}

需求2: 定义一个功能,比较两个数是否相等。

明确一:这个功能的结果是什么?        有,boolean.明确二:这个功能实现过程中是否需要未知内容参与运算?        有,两个整数。    public static boolean equals(int a,int b)    {        /*        if(a==b)            return true;        else            return false;        boolean x ;        if(a==b)            x = true;        else            x = false;        return x;        *///      return (a==b)?true:false;        return a==b;}

需求3: 定义功能,打印99乘法表。

public static void print99(){    for(int x=1; x<=9; x++)    {        for(int y=1; y<=x; y++)        {            System.out.print(y+"*"+x+"="+y*x+"\t");        }        System.out.println();    }}

注意问题:

  1、方法要定义在类中  2、和顺序无关   3、不可以在方法里 再定义方法  4、可以在方法里  调用其他的方法

局部变量与全局变量,this关键字的作用

局部变量

  • 定义在类的方法内或代码块内的变量
  • 局部变量只在定义它的方法体内或代码块内有效
  • 局部变量在使用之前,必须先初始化

全局变量(成员变量)

  • 一个类中既不在方法体内也不在程序块内定义的变量
  • 类中所有的方法和代码块都可以访问成员变量
  • 对于没有初始化的成员变量,系统会指定默认的值

成员变量的默认初值

this关键字

  • 当成员变量和局部变量重名,可以用关键字this来区分。//仅仅是this的一个表现形式

  • this : 代表对象。代表哪个对象呢?当前对象。

    this就是所在函数所属对象的引用。

    简单说:哪个对象调用了this所在的函数,this就代表哪个对象

  • this也可以用于在构造函数中调用其他构造函数。

    注意:只能定义在构造函数的第一行。因为初始化动作要先执行。

  • 凡是被对象调用的东西 比如属性或函数 它们都持有一个this引用

重载(overload)

  • 重载的概念

    在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
  • 重载的特点:

    与返回值类型无关,只看参数列表。
  • 重载的好处:

    方便于阅读,优化了程序设计。
  • 重载示例:

    //返回两个整数的和 int add(int x,int y){return x+y;}//返回三个整数的和int add(int x,int y,int z){return x+y+z;}//返回两个小数的和double add(double x,double y){return x+y;}

总结:重载特点,两同三不同

构造器(构造方法)

  • 通过构造器用于构造该类的对象。Java通过new关键字来调用构造器,从而返回该类的对象。是一种特殊的方法:

    [修饰符]  类名 (参数列表){        //n条语句}   
  • 1、构造器没有返回值类型

  • 2、方法名称要和类名保持一致
  • 3、一个类中可以有多个构造器,但是参数列表不同:参数的顺序不同、参数的类型不同、参数的个数不同
  • 4、构建类的对象 通过new关键字 例:Mobile stu=new Mobile();
  • 5、系统会自动添加一个无参的构造器
  • 6、当含有有参的构造器时 会把默认的无参的构造器干掉
0 0
原创粉丝点击