1.简述对象与类
对象是实体,需要被创建,可以为我们做事情
类是规范,根据类的定义来创建对象
对象=属性+服务
2.定义类
package vendingmachine;
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) {
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.showPrompt();
vm.showBalance();
vm.insertMoney(100);
vm.getFood();
vm.showBalance();
}
}
创建对象:VendingMachine vm=new VendingMachine();\\对象的变量是对象的管理者
3.成员变量和成员函数
定义在函数内部的变量就是本地变量
本地变量的生存期和作用域都是函数内部
成员变量的生存期是对象的生存期,作用域是类内部的成员函数
4.对象初始化
构造函数:
如果有一个成员函数的名字和类的名字完全相同,则在创建这个类的每一个对象的时候会自动调用这个函数。(这个函数不能有返回类型)
函数重载:
一个类可以有多个构造函数,只要他们参数表不同
创建对象的时候给出不同的参数值,就会自动调用不同的构造参数
一个类里的同名但参数表不同的函数构成了重载关系
5.对象的识别
package clock;
public class Display {
private int value=0;
private int limit=0;
public Display(int limit) {
this.limit=limit;
}
public void increase() {
value++;
if(value==limit) {
value=0;
}
}
public int getValue() {
return value;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Display d=new Display(24);
for(;;) {
d.increase();
System.out.println(d.getValue());
}
}
}
代码作用:从0开始一直走到23然后归0
private的意思是私有的,在java中表示在本类中可以引入使用
public表示公开的,即所有的类都可以引入使用
6.对象的交互
package clock;
public class Clock {
private Display hour=new Display(24);
private Display minute=new Display(60);
public void start() {
while(true) {
minute.increase();
if(minute.getValue()==0) {
hour.increase();
}
System.out.printf("%02d:%02d\n",hour.getValue(),minute.getValue());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Clock clock=new Clock();
clock.start();
}
}
解读:一个clock对象里由两个display的对象组成。
7.封闭的访问属性
对象=属性+服务
数据:属性或状态
操作:函数
把数据和对数据的操作放在一起就是封装
即没有private也没有public的,我们叫做friendly,意思是和它位于同一个包的其他类可以访问。
一个.java文件(一个源代码文件)叫做一个编译单元
当一个编译单元有不止一个类的时候,只有一个类可以是public。
源代码文件名必须和public类名字相同
8.包
只要你要用到的类和你不在一个包里就要用到import
9.类变量(static)
private static int ste;
可以通过类名.类变量
这样的方式访问
10.类函数
public static void f()
static函数只能调用static函数,只能调用static的成员变量
类函数和类变量是属于类的,而不属于其他具体的对象