JavaSE笔记08

方法重载

前提

  • 同一个类中

  • 同名的方法

方法重载的好处

  • 没有重载不方便:让方法调用者,在调用方法的时候,不必为了相似的功能而查阅文档,查找各种不同的方法名,降低学习成本,提高开发效率。

  • 有了重置很方便:在调用一系列重载的方法时,感觉上就像是在调用同一个方法。对使用者来说,只需要知道一个方法名就能够应对各种不同情况。

规则限制

限制的来源:本质上只要让系统能够区分清楚我们具体要调用哪一个方法。

  • 在同一个类中,如果两个方法的方法名一致,那么参数列表必须不同。

  • 参数列表区分

    • 要么是参数个数不同

    • 要么是参数类型不同

//参数个数不同
public int add(int a, int b);
public int add(int a, int b, int c);

//参数类型不同
public int add(int a, int b);
public double add(double a, double b);

方法可变参数

①需求

在实际开发过程中,确实有一些情况不确定在调用方法时传入几个参数。所以为了让调用方法时能够弹性传参,JavaSE5.0标准增加了可变参数功能。

②声明和调用

// 能够计算任意个数整数之和的加法
// 使用String ... args来声明可变参数
public String add(String ... args) {

    System.out.println("暗号:可变参数");

    String sum = "";

    // 在方法体内,可变参数按照数组形式来处理
    for (int i = 0; i < args.length; i++) {
        sum = sum + args[i];
    }

    return sum;
}

③语法规则

  • 可变参数必须在整个参数列表的最后

  • 当调用方法时实际传入的参数既匹配可变参数列表方法,又匹配一个具体的参数列表方法,那么系统会优先调用具体的参数列表方法

递归

概念

方法自己调用自己。使用递归想要达到的目的是让方法中的代码重复执行,而且往往是在上一次执行的结果的基础上,再进一步执行。

 

封装

①含义

将对象中数据或代码逻辑隐藏起来。对数据的操作在类的内部完成,对外界隐藏实现的细节。

②好处

  • 对象(或组件)内部代码实现的细节可以对外隐藏。

  • 简化外部使用对象时的操作难度。外部使用对象时,调用对象暴露出来的方法即可。

  • 让整个系统的开发组件化、模块化程度更高,更有利于实现:高内聚、低耦合。

构造器

注意:构造器和方法是两码事,各是各的。

①构造器引入

当我们使用new关键字创建一个类的对象时,就是在使用这个类的构造器了:

 

如果我们没有明确声明构造器,那么系统回给类分配一个隐式的构造器(无参构造)。

②构造器的作用

  • 作用1:创建对象。

  • 作用2:在创建对象的过程中,对类进行初始化操作。这些操作写在构造器的大括号中。

    • 初始化操作放到构造器里面,由构造器自动完成,程序员就不必在创建对象后还想着对这对象做初始化操作。

③构造器的组成部分

 

一个类可以有多个构造器

根据参数列表不同,多个构造器之间是重载关系。规则和方法重载一致:

  • 要么参数个数不同

  • 要么参数类型不同

 

⑤构造器相关语法规则

  • Java语言中,每个类都至少有一个构造器

  • 默认构造器的修饰符与所属类的修饰符一致

  • 一旦显式定义了构造器,则系统不再提供默认构造器

  • 一个类可以创建多个重载的构造器

  • 父类的构造器不可被子类继承

 

⑦类的属性赋值的顺序

//系统根据这个属性的类型来设置默认值。
private int age;

//显示初始化
private int age = 6;

//构造器初始化
public Person(int age) {
    this.age = age;
}

//调用方法或直接给属性赋值
person.setAge(5);

JavaBean

①实际项目开发中用到的类

  • JavaBean

    • 用来描述现实世界中的具体数据:Book、Employee、Department、Product、……

    • 也有其他名称:domain(领域模型)、POJO(Plain old Java Object普通的传统的Java对象)、entity(实体类)

  • 功能性组件:用来执行具体代码逻辑对应的操作(Javaweb中常见)

    • BookServlet

    • BookService

    • BookDao

  • 工具类:通常用来把某个特定操作封装到工具方法中。工具类通常是用类名来直接调用方法。

    • Aarrys.sort()

②JavaBean的要求

必须有的组成部分:

  • 私有的属性

  • 针对私有属性设置的公共的getter()、setter()方法

  • 无参构造器

③getter()和setter()方法的规则

private int age;

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

规则描述如下:

  • getXxx()或setXxx()方法取方法名字符串

  • 去掉get或set(剩下Xxx)

  • Xxx首字母小写

this关键字

①含义

  • 类的方法中:代表调用当前方法的对象 

 

  • 类的构造器中:代表当前构造器正在创建的对象

 

 

②this能干什么

//[1]调用属性
System.out.println("我的年龄:" + this.age);
System.out.println("我的姓名:" + this.soldierName);
System.out.println("我的武器:" + this.weapon);

//[2]调用方法
System.out.println("我的性别:" + this.getGender());

//[3]调用构造器
public class Tiger {

    private String tigerName;
    private int tigerAge;

    public Tiger() {
        System.out.println("这里是Tiger类的无参构造器");
    }

    public Tiger(String tigerName) {

        this();

        this.tigerName = tigerName;

        System.out.println("这里是Tiger类的一参构造器");

    }

    public Tiger(String tigerName, int tigerAge) {

        this("aaa");

        this.tigerName = tigerName;
        this.tigerAge = tigerAge;

        System.out.println("这里是Tiger类的两参构造器");
    }
}

[4] this调用构造器的规则

  • 在构造器中调用其他构造器,this()语句必须在第一行

  • 各个构造器之间调用不能形成闭环

 

 

package关键字

用来声明当前类所在的包。package声明所在包的语句必须是在类的第一行。若缺省该语句,则指定为无名包。

import关键字

在JDK编译Java源程序的时候,并不能保证所有的类都能够被JDK默认识别到。JDK无法默认识别的类就需要我们通过import语句导入。

语法规则:

  • 使用的位置:在package声明和类声明之间

  • 如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。

  • 如果导入一个类之后,又需要用到另一个同名的类,那么就需要使用全类名来引用

  • 如果已经导入java.a包下的类。那么如果需要使用a包的子包下的类的话,仍然需要导入。

  • import static组合的使用:静态导入。让当前类可以直接调用导入的类中的静态属性或方法,不必写类名了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值