Java oop开发:Java面向对象

方法(函数)
方法方法与函数的区别

函数:可以实现一定功能的代码块
方法:存放在类里面可以实现一定功能的单独的
代码块

在Java、C++、C#为例子的语言中 函数必须在方法里面,所以在Java中所提到的函数都可以是方法
在Python、lua 、VB这些语言中,函数可以在类外面定义,所以函数是函数 方法是方法

ps:有些时候 方法叫做类方法

既然方法可以实现一个功能 ,我们可以将其理解成一个工具,如何定义一个特定功能的方法,是一个简单的事情:

public class Test{
	// 定义了一个叫做Test的类	
	public static void SayHello(){		
	// 这里定义了一个方法,下面的代码是方法的代码块		
	System.out.println("我在说话");	
	}	
	public static void main(String[] args){		
	SayHello(); // 使用方法	
	}
}
其中语法就是

[权限修饰符] [静态修饰符] 返回值 方法名称(参数类型 参数名称){代码块;}

亮少QQ:2328031994

至于什么是权限修饰符 什么是静态修饰符 我们之后可以细讲 现在你可以省略他们(但是入口方法的不要省略)


public class Test{	
    void SayHello(){		
    // 这样的写法也可以	
    }
}

1
Q&A Time
Q:但是我们这样就无法在入口使用方法了,怎么解决呢?A:main 是被 static 修饰的方法 所以他是静态的方法 静态的方法中不可以使用非静态的类成员(类成员就是方法与属性的统筹)Q:如何解决?A:给Speak()方法进行static的修饰即可:
2

Q:那么非静态的方法一般是怎样被调用的呢?

3
非静态的方法可以调用非静态的方法
4

参数
有些时候我们需要给方法传入一个参数,用来控制代码的逻辑,比如我在写Galgame的时候(就是简单的对话游戏:像是草猫 之类的),我写了一个方法,这个方法实现了显示某个人物的语言信息,类似于这样:
public class GameMain{
	static void Speak(){		
	   String name = "旁白";	
	   String speakInfo = "欢迎光顾本游戏,我是负责吐槽的旁白君";		
	   Image touXiang = PANGBAI; // 旁白的头像图片 		
	    .... // 窗口设置的信息省略	
    }
}

5

图中,所圈出的信息可能随着游戏的进展发生不同的人物的不同的对白,这些是我们可以人为控制的,所以我们可以使用参数来对这些需要变动的量 进行调整
其中人物的名称我们可以知道是String 类型的 对话的信息也是String类型的 人物的头像我们姑且他是Image自定义的类型的,这三个变量是需要改动的,所以我们要传入三个参数

public class GameWindow{
	...	
	public static void Speak(String name,String speakInfo ,Image touXiang){		
	.... // 窗口设置的信息省略	
	}	
	public static void main(String[] args){		
	Speak("旁白","这个是可以自定义的",PANGBAI);	}}

6
这样我们就可以简单的实现旁白的自定义对话了

思考
既然如此,我们可不可以使用二维数组将我们对话的剧本信息呢?就像是这样{{“商人”,“那跟在你旁边的人是谁?”},{“玩家”,“那是我的应急食物”},{“派蒙”,“我才不是呢”}}的数组,然后使用下标,遍历这个数组 然后每次遍历之后得到的元素作为参数传入Speak方法中 , 不就实现了连贯的对话? ![7](https://img-blog.csdnimg.cn/c0de6e1be28b4ea5bfddfb57b9547030.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54u454yrXjBe,size_20,color_FFFFFF,t_70,g_se,x_16)

说着有趣了起来,打开编辑器,让我们来尝试着写写,但是我们暂时没有学习窗口,我们就试试简单地 console(控制台) 的打印:

public class game {
    static void speak(String name,String info){       
     System.out.println(name+":");        
     System.out.println("    "+ info);
    }    
    public static void main(String[] args) {
    String[][] speakArray = { 
       {"商人","那跟在你旁边的人是谁?"},
       {"玩家","那是我的应急食物"},   
       {"派蒙","我才不是应急食物呢"}   
    };       
     // 一个简答的迷你小剧本        
     for (String[] littleArray:speakArray){   
          speak(littleArray[0],littleArray[1]);            
     }   
  }
}

运行结果就是这样:
8

说一下关于方法的作用域
我在方法外部创建了一个值 A ,然后我将 A 这个值作为了参数传入了方法B 中 ,方法B 对传入的参数进行了修改,但是即使如此,A的值还是不会发生任何的改变。额,说的比抽象类还抽象…那么我们先来一段代码,你看看这个代码做个评价?
public class game {
    static void changeValue(int a){
     // 3 、 啊 c 被作为 参数 将 值 给了 a 变量        a = 234567; // 4 、 a 的值发生了改变    }    public static void main(String[] args) {        int c = 2; // 1 、 我定义了一个c,他的值是2        changeValue(c); // 2 、 让c变量去changeValue在磨练下自己        System.out.print(c); // 5、 打印 c    }}

粉色底

楷体
黑体
微软雅黑
华文彩云
宋体
fantasy
size= 5
size= 10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值