什么是方法?

System.out.println()//是什么?
//加法
public int add(int a,int b){
    return a+b;
}

 类似于其他语言中的函数

/*格式
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
}
*/
  • 如果返回值是void ,方法调用一定是一条语句

System.out.println("Hello World!");
  • 如果返回值是一个值,方法调用通常被当作一个值

int larger=max(30,40);

方法的重载

在一个类中,有相同的函数名,但是形参不同的函数

命名规则

  • 方法名称必须相同

  • 参数列表必须不同(个数不同、或者类型不同、参数排列顺序不同等)

  • 方法的返回值可以相同也可以不同

  • 仅仅返回类型不同不足以成为方法的重载

命令行传参

public class Ex04
    public static void main(String[] args){
    //args.length 数组长度
    for(int i=0;i<args.length;i++){
        System.out.println("args["+i+"]:"+args[i]);
    }
}

可变参数(不定项参数)

  • JDK 1.5开始,java支持传递同类型的可变参数的一个方法

  • 在方法声明中,在指定参数类型后加一个省略号(…)

public static void printMax(double...numbers){}
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声名

public void printMix(double...numbers,int i){}//报错
public void printMix(int i,double...numbers){}//不报错
package Text;

import java.sql.SQLOutput;
import java.util.Scanner;

public class learningTest {
    public static void main(String[] args){
        //调用可变参数的方法
        printMax(34,3,3,2,56.5);//这是传递了一堆数
        printMax(new double[]{1,2,3});//这是传递了一个数组
    }
    public static void printMax(double...numbers){
        if (numbers.length==0){
            System.out.println("NO argument passed");
            return;
        }
        double result=numbers[0];
        //最大值!
        for(int i=0;i<numbers.length;i++){
            if(numbers[i]>result){
                result=numbers[i];
            }
        }
        System.out.println("The Max value is"+result);
    }
}

递归(自己调用自己)

利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合

递归结构

  • 递归头

  • 递归体

 

public class learningTest {
    public static void main(String[] args){
        System.out.println(text(5));
    }
    //向text方法传入1,1!==1
    //向text方法传入2,2!==2*1
    //向text方法传入5,5!==5*4*3*2*1
    public static int text(int n){
        if(n==1){
            return 1;
        }else{
            return n*text(n-1);
        }
    }
}

### 多继承的定义及其在编程中的应用 #### 什么是多继承 多继承是指一个类可以从多个父类派生,从而继承这些父类的所有属性和方法[^4]。这种机制允许子类同时拥有来自不同基类的功能,增强了代码的复用性和灵活性。 #### 多继承的特点 - **复杂性增加**:由于涉及多个父类,可能会导致命名冲突或歧义问题。 - **菱形继承问题**:当两个父类具有共同的祖先时,可能导致重复继承同一成员变量或方法的情况。某些语言(如 C++)提供了虚拟继承(virtual inheritance)来解决此问题[^6]。 #### 示例代码 (C++) 以下是 C++ 中的一个典型多继承示例: ```cpp #include <iostream> using namespace std; // 基类 A class A { public: void displayA() { cout << "Class A's method." << endl; } }; // 基类 B class B { public: void displayB() { cout << "Class B's method." << endl; } }; // 子类 C 同时继承自 A 和 B class C : public A, public B { public: void displayC() { cout << "Class C's method." << endl; } }; int main() { C obj; // 创建 C 的实例 obj.displayA(); // 调用从 A 继承的方法 obj.displayB(); // 调用从 B 继承的方法 obj.displayC(); // 调用自身的特有方法 return 0; } ``` 在此示例中,`C` 类既可以直接访问自己声明的内容,也可以间接通过其父类 `A` 和 `B` 访问它们各自的成员函数。 #### 解决潜在问题的技术手段 针对多继承可能引发的问题,现代编程语言采取了一些措施加以缓解: 1. **Python 使用 Method Resolution Order (MRO)** 来明确查找顺序,避免因多重路径造成的混乱; 2. **Java 则完全摒弃了传统意义上的多继承**, 只保留单一继承并引入接口作为补充方案;这样既能保持清晰结构又能达到类似目的[^7]。 #### 应用场景 尽管存在诸多挑战,但在特定领域内合理运用仍能带来显著优势: - 游戏开发引擎设计时常需融合图形渲染、物理计算等多种能力于一体; - 数据库管理系统也可能借助此类方式构建高效灵活的数据存储与检索框架。 --- #### --相关问题--: 1. 单一继承体系相比多继承有哪些优缺点? 2. 接口是否可以看作一种特殊的“多继承”形式?为什么? 3. 如果遇到钻石继承问题,除了采用虚拟继承外还有哪些解决方案可供选择?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值