构造方法和对象
对局部变量和成员变量的补充
不同:
1. 成员变量,作用范围是整个类
局部变量,方法内,语句内
2. 默认值不同
成员变量,有自己的默认值
局部变量,没有默认值,不赋值不能使用
3. 内存位置不同
成员变量,跟随对象进入对内存生命相对较长
局部变量,跟随方法,方法出栈,生命相对较短
4. 定义位置上的区别
成员变量,定义在类中,方法外
局部变量,方法内,语句内
构造方法
当程序用类创建对象时需使用他的构造方法。允许一个类中编写若干个构造方法,但必须保证他们的参数不同,参数不同是指:参数的个数不同,或参数个数相同,但参数列表中对应的某个参数的类型不同。
例:下面Point类有两个构造方法
class Point {
int x,y;
Point(){
x=1;
y=1;
}
Point(int a,int b){
x=a;
y=b;
}
}
下面Point类只有一个构造方法,其中void Point(int a,int b)和int Point()都不是构造方法。
- 构造方法没有类型
class Point {
int x,y;
Point(){
x=1;
y=1;
}
void Point(int a,int b){
x=a;
y=b;
}
int Point(){
return 12;
}
}
对象 *
创建对象:使用new运算符和类的构造方法为声明的对象分配变量
- 对象通过使用运算符“.”访问自己的变量
对象.变量
(体现对象的属性) - 对象通过使用运算符“.”调用自己的变量
对象.方法
(体现对象的行为)
封装:面对对象的三大特征:封装,继承,多态
关键字 private - 属于成员修饰符,不能修饰局部变量
public class Person {
//人的姓名,成员变量
String name;
//人的年龄,成员变量
private int age ;
//变量age被私有,提供方法,让外面的类使用
//定义方法,对age变量进行赋值,方法名字,必须set开头
public void setAge(int a){
//对变量参数a进行范围的限制
if(a<0 || a > 200){
//如果a超过范围,手动将age赋值为20
age = 20;
}else{
//如果a没有超过范围,直接对age赋值
age = a;
}
}
//定义方法,对变量age获取值使用,方法名字get
public int getAge(){
return age;
}
//定义人的说话功能,方法中,要求说出自己的姓名和年龄
public void speak(){
System.out.println(name+"..."+age);
}
}
关键字 this
public class Person {
private int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
/*
* 定义方法: 比较是否是同龄人,是就返回true,不是就返回false
* 方法的返回值: true false
*/
public boolean compare(Person p){
//自己和别人比年龄,自己是 this和p
return this.age == p.age;
}
}
封装
- 封装 把对象的属性与方法的实现细节隐藏。
- 封装的体现
变量:使用private修饰,这就是变量的封装
方法:也是一种封装,封装了多条代码
类:也是一种封装,封装了多个方法
- 封装的体现