文档介绍:第四章面向对象特性
类和封装
继承和多态
类和封装
基本结构
Methods
封装
instance variables
构造器和初始化
Java类的基本结构
class class_name{
constructor1//构造器
constructor2
…
method1//方法
method2
…
instance variable1//实例变量
field2
….
}
Method behavior and state
一个类的每个对象可以拥有不同的实例变量,而它们的方法行为呢?
应该说,同一类的每个实例具有同样的方法,但是这些方法也可以具有不同的行为,取决于实例变量。
Method
Song
title
artist
setTitle()
setArtist()
play()
State
(knows)
Behavior(does)
void play() {
(title);
}
所有实例的play方法都是一样的;
play()方法的行为将因title的不同而不同。
Song t1=new Song();
(“Travel”);
();
Song t2=new Song();
(“Sing”);
();
Song “Travel”
Song “Sing”
behavior and state
Method
Dog
size
name
bark()
void bark() {
if(size >60)
(“Woof!”);
else if(size >14)
(“Ruuf!”);
else
(“Yip!”);
}
size不同,bark()的是不一样的。
behavior and state
Method pass something to method
Dog d=new Dog();
(3); (4);
void bark(int numOfBarks){
while(numOfBarks>0){
(“ruff”);
numOfBarks--;
}
}
arguments
parameter
在方法内充当局部变量
值3被发送出去
Method get things back from a method
void go(){
//return nothing
}
int t=life. giveSecret();
int giveSecret() {
return 42;
}
类型必须匹配
这里必须是一个int
值42被发送出去
每个方法必须声明返回类型,它也叫该方法的类型
Method Java is pass-by-value
int x=7;
00000111
x
void go(int z) { }
z
00000111
x
z
00000111
00000111
x
z
2 (x);
传递的是变量的值,而不是变量的地址
3 如果z改变,x不会受影响
void go(int z) {
z=0;
}
1
Method Getter and Setter
Employee
salary
name
setName()
用来读取和设置属性
setSalary()
getName()
getSalary()
class Employee {
double salary;
String name;
String getName() {
return name;
}
void setName(String s){
name=s;
}
}