当前位置:   article > 正文

面向对象的程序设计_面向对象程序设计csdn

面向对象程序设计csdn

第一章:类与对象

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。

  1. public class VendingMachine {
  2. int price = 80;
  3. int balance;
  4. int total;
  5. void showPrompt() {
  6. System.out.println("Welcome");
  7. }
  8. void insertMoney(int amount) {
  9. balance = balance + amount;
  10. }
  11. void showBalance() {
  12. System.out.println(balance);
  13. }
  14. void getFood() {
  15. if (balance >= price) {
  16. balance = balance - price;
  17. System.out.println("Here you are");
  18. } else {
  19. System.out.println(
  20. "Sorry, your balance is running low");
  21. }
  22. }

上述代码就是我们定义一个Vendingmachine类的过程,它的成员变量就是price,balance,total。它的成员函数就是showPrompt,insertMoney,showBalance,getFood(注,定义成员函数时不能在main函数里面,因为函数内部不能定义函数)

将类定义好了之后,我们就可以用类创造对象,创造的对象同时具有类的成员变量和成员函数,可以供我们进行操作

  1. public static void main(String args[]) {
  2. VendingMachine vm=new VendingMachine();
  3. vm.showPrompt();
  4. vm.insertMoney(100);
  5. vm.showBalance();
  6. vm.getFood();
  7. vm.showBalance();
  8. }
  9. }

如上就是定义了一个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)关系

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/512358
推荐阅读
相关标签
  

闽ICP备14008679号