第四课,定义类:
package vendingmachine;
public class VendingMachine {
int price = 80; //属性
int balance = f(); //属性
int total; //属性
VendingMachine() //构造函数(构造函数没有返回类型)
{ //构造函数的名字与类的名字完全相同
total = 0;
}
VendingMachine( int price ) //上下两者的区别用debug的方法自己体会
{
this();
//调用另一个构造函数(必须只能在构造函数中使用,并且只能在第一行,使用一次)
this.price = price;
}
//一个类中重名但参数表不同的函数构成了重载关系
int f()
{
return 0;
}
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) {
VendingMachine vm = new VendingMachine(); //创建对象
vm.showPrompt();
vm.showBalance();
vm.insertMoney(100);
vm.getFood();
vm.showBalance();
VendingMachine vm1 = new VendingMachine(100);
vm1.insertMoney(200);
vm.showBalance();
vm1.showBalance();
}
}
第五课,private,public和static等一些的知识点:
package display;
public class Display {
private int value = 0; //private 私有的,只能用于本个类中
private int limit = 0; //除非特殊情况,否则成员变量(如value和limit)都是private
//private的私有是针对于类而不是对象;同一个类的所有不同对象之间可以
//访问别人的私有成员
private static int step = 1;//static变量称为类变量,static变量不属于任何一个对象而是属于类本身
//任何这个类的对象里面都不包含static变量
public Display( int limit ){ //不加public或者private的是friendly型,在同一个包里的可以访问这个类
this.limit = limit; //一个.java文件是一个编译单元
} //一个编译单元中有不止一个类时,只能有一个public的class,
//并且public的类的名字必须与文件名相同
public void increase() {
value++;
if( value == limit )
{
value = 0;
}
}
public int getValue() {
return value;
}
public static void f() {
}
public static void main(String[] args) {
// Display d = new Display(24); 这些为时钟的源代码
// for( ; ; )
// {
// d.increase();
// System.out.println(d.getValue());
// }
Display d1 = new Display(10);
Display d2 = new Display(20);
d1.increase();
f(); //static函数只可以调用static函数,也只能访问static变量
d1.f(); //static的函数和变量都可以通过对象来进行访问,或者直接通过类来访问
System.out.println(d1.getValue());
System.out.println(d2.getValue());
System.out.println(d1.step);
System.out.println(d2.step);
d1.step = 2;
System.out.println(d1.step);
System.out.println(d2.step);
Display.step = 3;
System.out.println(d1.step);
System.out.println(d2.step);
}
}
第六课,包和import的相关内容:
package clock; //一个包内的所有文件开头都是package 包的名字
//import display.Display; //引用一个其他包的类时,要import,格式为import 包名字.类名字
//也可以用import display.*;来引用这个包里面的所有东西,但是可能会出现重名冲突问题
//import display.led.Display是引用了包display里面的包led里面的东西
public class Clock {
private display.Display hour = new display.Display(24);
private display.Display minite = new display.Display(60);
//当没有import时,要引用其他包里的类时,每次引用都要如display.Display一样使用全名
public void start() {
while( true )
{
minite.increase();
if( minite.getValue() == 0)
{
hour.increase();
}
System.out.printf("%02d:%02d\n",hour.getValue(),minite.getValue());
}
}
public static void main(String[] args) {
Clock clock = new Clock();
clock.start();
}
}