面向对象的程序设计--Java语言
用类制造对象
一、对象:对象是实体,需要被创建,可以为我们做事情
二、类:类是规范,根据类的定义创建对象
定义类
创建对象
- new VendingMachine();
- VendingMachine vm =new VendingMachine();
- 对象变量是对象的管理者
看下这个例子
package VendingMachine;
public class VendingMachine {
int price;
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)
System.out.println("Here you are");
balance=balance-price;
total=total+price;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
VendingMachine vm=new VendingMachine();
vm.showbalance();
vm.insertMoney(100);
vm.getFood();
}
}
这段代码创建了一个类叫VendingMachine,然后利用这个类制造了一个对象叫vm,让这个对象进行了一些操作。
类定义了所有对象是什么样的,而对象拥有类的具体实例。
容器类
ArrayList<String> notes = new ArrayList<String>();
容器类有两个类型
- 容器的类型
- 元素的类型
实例变量、成员变量与函数
一、类
1、类定义了对象中所具有的变量,这些变量称作成员变量
2、每个对象有自己的变量,和同一个类的其他对象是分开的
二、成员变量
1、在函数中可以直接写成员变量的名字来访问成员变量
2、那么究竟访问的是哪个对象的呢?
3、函数是通过对象来调用的
v.inserMoney()
4、这次调用临时建立了inserMoney()和v之间的关系,让inserMoney()内部的成员变量指的是v的成员变量
三、this
this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个对象
四、本地变量
1、定义:定义在函数内部的变量的变量就是本地变量
2、本地变量的生存期和作用域都是函数内部
3、成员变量的生存期是对象期,作用域是类内部的成员函数。
五、实例变量
对象初始化
重载:
1、一个类可以有多个构造函数,只要参数不同
2、创建对象时的不同参数值会自动调用不同的构造函数
3、通过this()还可以调用其他构造函数
4、一个类中同名但参数表不同的函数构造重载关系
类变量
一、类变量
1、静态代码块 static{ }
静态代码块只会被执行一次;
2、类定义的时候,类中变量创建在代码区,此时静态代码块会被自动执行;
例子:
package smm;
public class LearnStatic {
static int i=1;
static{//静态代码块只会被执行一次
System.out.println("a");
i++;
}
public LearnStatic(){
System.out.println("b");
i++;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
LearnStatic l1=new LearnStatic();
System.out.println(l1.i);
LearnStatic l2=new LearnStatic();
System.out.println(l2.i);
}
}
输出结果:
a
b
3
b
4
类变量不属于任何对象,它属于这个类。
成员变量的隐藏和方法重写
成员变量的隐藏
子类也可以隐藏继承的成员变量,对于子类,可以从父类继承成员变量,只要子类中声明的成员变量和父类中的成员变量同名,子类就隐藏了继承的成员,即子类创建的对象或子类中定义的实例方法所访问操作的成员变量一定是子类重新声明的这个成员变量(和父类中的成员变量同名)
方法重写
子类通过方法重写(Override)可以隐藏已继承的实例方法(方法重写也称方法覆盖)。
1、重写的语法规则
如果子类可以继承父类的某个实例方法,那么子类有权重写这个方法。方法重写是指在子类中