zoukankan      html  css  js  c++  java
  • 【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类

  • 相关阅读:
    福大软工 · 第七次作业
    git分支重命名
    vscode左侧文件不同颜色标识含义
    正则表达式匹配指定字符区间的内容,且不包含指定字符
    git如何撤销工作区的修改
    git查看某个文件的提交历史
    扫盲篇--远程桌面连接
    git merge后如何撤销
    element-ui+vue-treeselect校验
    typeof 踩坑总结
  • 原文地址:https://www.cnblogs.com/ldragon2000/p/14151640.html
Copyright © 2011-2022 走看看