定义类,函数使用,变量调用
在使用java程序语言编写代码的时候,函数的定义至关重要。
到目前为止,灵活的使用函数,创建对象,定义变量这项编程基本功,对于大部分程序员来说可是走一步忘一步,看似简单,实则对编程语言的理解不够深入。
当然,如果得心应手的的话,对后期的编程效率的提升是肉眼可见的。
例如:对于一个人投币的投篮机器 ,当我们创建一个“类(shootingmachine)”,继承这个类的有四个属性,和后续的所进行的动作,我们需要定义成员变量,成员变量:定义在函数外部的变量是成员变量。为什么说外部呢,因为在定义“类”的时候,它是可以被外界访问的,所以能从代码中看到class前面有一个public(公有类)
编写如下代码:
public class shootingmachine {
// shooting machine 人投币后的就可以投篮机器
int Hcoin; //需要多少硬币
int amount; //放入多少钱
int total; //总收入金额后的余额
int balance; //当前的金额
void showPrompt() //提示信息,是否开始,请投币
{
System.out.println("start?");
}
void showBalance() //显示余额
{
System.out.println("目前金额为:"+balance);
}
void insertMoney(int amount) //投入了多少钱
{
balance = balance + amount;
this.showBalance();
}
void playShoot() //开始投篮
{
if(balance>=Hcoin) //如果投入的钱大于所需的硬币
{
System.out.println("Play with go.");
balance = balance - Hcoin;
total = total + Hcoin;
System.out.println("目前还剩余额为:"+total);
}
}
有了“类”,还需要对象的创建
创建类的对象,new这个关键字可是或不缺少的;
后续变量的调用,通过创建对象变量来管理这些函数,也称为本地变量;
本地变量的生存期和作用域都是函数内部,也就是在如下代码中的本地函数中;
public static void main(String[] args) {
// TODO Auto-generated method stub
//有了类了,还需要怎样,我要把对象进行创建
shootingmachine s = new shootingmachine(); //创建对象变量
s.showPrompt();
s.showBalance();
s.insertMoney(100); //投入金额数
s.playShoot();
s.showBalance();
构造函数,重载函数以及this关键字的使用细节
构造函数和重载函数的出现,我想了解过C++的朋友,对这两个函数的的定义和使用方法大概不会陌生的;
他们的使用方法同样在Java中也同样适用,但可不要忘了这两者的使用细节;
1.构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法。
2.重载函数是函数的一种特殊情况,为方便使用,Java允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
如下代码:
shootingmachine() //构造函数
{
this.balance = 0;
}
shootingmachine(int Hcoin) //重载函数
{
this.Hcoin = Hcoin; //this关键字可以调用内部变量
}
注意this关键字对内部函数变量的调用
对于this这个关键字
1.this代表当前对象的一个引用。所谓当前对象,指的是调用类中方法或属性的那个对象。
2.this只能在方法内部使用,表示对“调用方法的那个对象”的引用。
3.this不能用于静态方法。main方法也是静态的,所以this也不能用于main方法。
例如在本程序中:通过点“.”运算符调用某个对象的函数,在成员函数内部直接调用自己(this)的其他函数,在一个类的内部中成员函数调用另一个成员函数需要用到this,之外的就不管了。
shootingmachine() //构造函数
{
this.balance = 0;
}
void shootingmachine(int Hcoin) //重载函数,括号里的参数不能相同与构造函数
{
this.Hcoin = Hcoin; //this关键字可以调用内部变量
}
void setHcoin(int number) //设置所需硬币数
{
this.number= number;
this.playShoot();
}