面向对象的程序设计

第一章:类与对象

1.1用类制造对象

什么是类?什么是对象?

Picture pic=new picture(420,0)

这句话的意思是,用new创建一个picture类的对象pic,它的参数是(420,300),其中的pic就是对象,picture就是类

上述的java语句就是一个用类制造对象的例子。

回答上述的问题

对象是实体,我们创造对象来满足我们的要求

类是规范,根据类的定义来创造对象

对象=数据+操作

数据就是每一个对象所实际对应的,操作就是对这个类中所定义函数,对数据进行操作

1.2定义类

一个类由两种东西组成:表示对象有什么的成员变量和表示对象能做什么的成员函数。

一旦定义了类,我们就可以创建这个类的多个对象,这些对象都会做那个类所定义的动作(函数),但是各自具有不同的数据。

我们定义的类,其实和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对象,以及进行了相应的操作

“.”点运算符就是让这个对象执行指定的操作

1.3成员变量和成员函数

本地变量和成员变量

定义在函数内部的变量是本地变量,本地变量的作用域和生存期是函数内部。

而对于在类中定义的成员变量,它的作用域和生存期是对象的生存期,作用域是类内部的成员函数。

成员变量和成员函数的关系

假设我们创建了两个对象

Vendingmachine v1=new Vendingmachine();

Vendingmachine v2=new Vendingmachine();

那么在调用成员函数的时候,成员函数作用的对象是谁的成员变量呢?

v1.insertMoney();这次调用临时建立了insertMoney()和v1之间的关系,此时insertMoney内部的成员变量对应的是v1的成员变量

this

this是成员变量的一个特殊的固有本地变量,他表示的是调用此函数的那个对象。

调用函数

一般我们调用函数的时候,格式是例如

v1.insertMoney(),前面是调用函数所针对的对象,后面是调用的函数

而在成员函数内部调用函数时

例如

void setMoney(){

this.Money=money;

showMoney()

}

如上,我们可以直接调用showMoney函数而不需要在前面加上函数所针对的对象。

1.4对象初始化

构造函数

如果有一个成员函数的名字和类名完全相同,则在创建这个类的每一个对象的时候都会自动调用这个函数,称这个函数叫构造函数。

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)关系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值