赞
踩
1.1用类制造对象
什么是类?什么是对象?
Picture pic=new picture(420,0)
这句话的意思是,用new创建一个picture类的对象pic,它的参数是(420,300),其中的pic就是对象,picture就是类
上述的java语句就是一个用类制造对象的例子。
回答上述的问题
对象是实体,我们创造对象来满足我们的要求
类是规范,根据类的定义来创造对象
对象=数据+操作
数据就是每一个对象所实际对应的,操作就是对这个类中所定义函数,对数据进行操作
一个类由两种东西组成:表示对象有什么的成员变量和表示对象能做什么的成员函数。
一旦定义了类,我们就可以创建这个类的多个对象,这些对象都会做那个类所定义的动作(函数),但是各自具有不同的数据。
我们定义的类,其实和java自带的类int,String等等都是类似的,他们都可以来定义变量,例如我们说int i=0,就是用java自带的类int来定义了变量i。我们可以自己定义一个类Vendingmachine,然后就可以用它来定义变量,例如Vendingmachine v=new Vendingmachine();就是用我们自己定义的类来定义了变量v。
- public class VendingMachine {
- int price = 80;
- int balance;
- int total;
-
- void showPrompt() {
- System.out.println("Welcome");
- }
-
- void insertMoney(int amount) {
- balance = balance + amount;
- }
-
- void showBalance() {
- System.out.println(balance);
- }
-
- void getFood() {
- if (balance >= price) {
- balance = balance - price;
- System.out.println("Here you are");
- } else {
- System.out.println(
- "Sorry, your balance is running low");
- }
- }
上述代码就是我们定义一个Vendingmachine类的过程,它的成员变量就是price,balance,total。它的成员函数就是showPrompt,insertMoney,showBalance,getFood(注,定义成员函数时不能在main函数里面,因为函数内部不能定义函数)
将类定义好了之后,我们就可以用类创造对象,创造的对象同时具有类的成员变量和成员函数,可以供我们进行操作
- public static void main(String args[]) {
- VendingMachine vm=new VendingMachine();
- vm.showPrompt();
- vm.insertMoney(100);
- vm.showBalance();
- vm.getFood();
- vm.showBalance();
- }
- }
如上就是定义了一个vm对象,以及进行了相应的操作
“.”点运算符就是让这个对象执行指定的操作
定义在函数内部的变量是本地变量,本地变量的作用域和生存期是函数内部。
而对于在类中定义的成员变量,它的作用域和生存期是对象的生存期,作用域是类内部的成员函数。
假设我们创建了两个对象
Vendingmachine v1=new Vendingmachine();
Vendingmachine v2=new Vendingmachine();
那么在调用成员函数的时候,成员函数作用的对象是谁的成员变量呢?
v1.insertMoney();这次调用临时建立了insertMoney()和v1之间的关系,此时insertMoney内部的成员变量对应的是v1的成员变量
this是成员变量的一个特殊的固有本地变量,他表示的是调用此函数的那个对象。
一般我们调用函数的时候,格式是例如
v1.insertMoney(),前面是调用函数所针对的对象,后面是调用的函数
而在成员函数内部调用函数时
例如
void setMoney(){
this.Money=money;
showMoney()
}
如上,我们可以直接调用showMoney函数而不需要在前面加上函数所针对的对象。
如果有一个成员函数的名字和类名完全相同,则在创建这个类的每一个对象的时候都会自动调用这个函数,称这个函数叫构造函数。
public class Vendingmachine{
int price;
int balance;
int total;
Vendingmachine(){
price=0;
}
Vendingmachine(int price){
this.price=price;
}
(注:this.price=price的含义就是说,调用这个函数的那个对象的本地变量price=(int price)中的那个price)
上面的Vendingmachine()就是构造函数,它不能有任何的返回类型
构造函数它有什么作用呢?
它使得我们在创建对象的时候,可以分为有参的情况和无参的情况
例如,Vendingmachine v1=new Vendingmachine();
Vendingmachine v2=new Vendingmachine(100);
那么 v1就自动调用无参的那个构造函数,v1的初始值中price=0;
v2则调用有参的那个构造函数,v2的初始值中price=100;
上述的这件事就叫做重载:一个类可以有多个构造函数,只要他们的参数表不同。创造对象的时候给出不同的参数就会自动调用不同的构造函数。
一个类里面同名但参数表不同的函数构成了重载(overload)关系
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。