【Java学习】07.方法和类的深度分析

这篇博客我们来深入的方法和类,包括重载、参数传递以及递归。讨论访问控制,static关键字以及重要的Java的几种内置类,如String

方法

方法的重载与重写

重载

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
例子如下:

public class Overloading {
    public int test(){
        System.out.println("test1");
        return 1;
    }
 
    public void test(int a){
        System.out.println("test2");
    }   
 
    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }   
 
    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }   
 
    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

java有时会通过自动类型转换来寻找匹配的形参。

重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
因为这个涉及到类的继承,我们在继承之后来详细举例说明,这里仅做一个介绍:

参数传递

将对象作为参数

对象参数最常见于构造函数,使用时就像是使用内建类一样。传递形参的类型,是对象的类的名称。

参数传递的深入分析

传递参数时,如果使用的是基本类型的参数,那么直接传递参数的值,如果传递的是引用类型,那么传递的则是对象的地址。
下面说一下形参和实参:
实参(argument):
全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参(parameter):
全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

返回对象

Java函数通过函数前添加类型来规定函数的返回值,那么返回对像呢?
同样的道理,在函数前返回写上返回对象的类名就可以了

递归

递归就是函数调用自己,相当于一个循环,一定要规定好递归的出口这个很重要。
下面是一个递归的例子——利用递归来计算阶乘:

    int fact(int n) {
        int result;
        if (n == 1) {
            return 1;
        }
        result = fact(n - 1) * n;
        return result;
    }

访问控制

Java的访问控制符包括public、private、protected、default,这个我在02篇的文章末尾中提到过:

  • private(当前类访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)使用private访问控制符来修饰,则这个成员只能在当前类的内部被访问。很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部。
  • default(包(package)访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访问控制修饰,就称它为包访问权限的,default访问控制的成员或外部类可以被相同包下的其他类访问。
  • protected(子类访问权限):如果一个成员(包括成员变量、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法。
  • public(公共访问权限):这是一个最宽松的访问控制级别,如果一个成员(包括成员变量、方法和构造器等)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同一个包中,是否具有父子继承关系。

类的深入探究

嵌套类

Java 语言中允许在另外一个类中定义一个类,这样的类被称为嵌套类。包含嵌套类的类称为外部类,被包含的类称为内部类。

几个重要类

数组

这里先不做介绍,具体的内容可以参考菜鸟教程-Java数组

String

这里先不做介绍,具体的内容可以参考菜鸟教程-String类

posted @ 2020-12-19 18:59  巨核单线程  阅读(112)  评论(0编辑  收藏  举报