1.类的定义:
a.定义格式:
class 类名{
/*
private(私有)
修饰的成员变量或成员方法
只能在本类中使用,而不能在类外部
*/
private 类型1 成员变量名1;
private 类型2 成员变量名2;
.....
//普通的成员方法
public 返回值类型 方法名(形参类型1 变量名1,形参类型2 变量名2,....){//成员方法没有static修饰
//方法代码
// return 返回值;
}
//getter/setter方法
public 类型1 getXxxx(){//Xxxx代表变量名,变量名首字母大写
return 成员变量名;
}
public void setXxxx(类型1 变量名1){
this.成员变量名1=变量名1;//将局部变量变量名1的值赋值给成员变量
//当局部变量名和成员变量名相同时候,this用来区分成员变量和局部变量
} //this所在成员方法被该类的对象调用,this就指向该对象
....//成员变量名2的getter/setter方法
}
b.使用格式:
class Student{
private String name ;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
//年龄的赋值与获取值
public int getAge() {
return age;
}
public void setAge(int age) {//当把age用private修饰后,外部不能通过 对象名.age 来直接访问,也就不能给age赋任意值
if(age>=1 && age<=150){ //当有setAae()方法之后,我可以在setAge()方法中对age的数值做一些安全性判断,提高安全性
this.age=age;
}else{
System.out.println("您输入的年龄有误");
}
}
}
public static void main(String[] args) {
Student s=new Student();
s.setName("哈哈");
s.getName();
}
c.面向过程与面向对象
1.面向过程:
开发软件的时候需要考虑程序实现的每个细节
2.面向对象:
a.更符合人们的思维习惯
b.将复杂的事物的简单化
class GirlFriend{
洗干净的衣服 washClothe(衣服 ){
WashClotheMachine wcm=new WashClotheMachine();
wcm.washClothe(衣服)
}
}
class WashClotheMachine{
洗干净的衣服 washClothe(衣服 ){
}
}
GirlFriend gf=new GirlFriend();
gf.washClothe(脏衣服);
c.由执行者变成指挥者(调用者)
c.成员变量与局部变量对比:
成员变量
定义位置:类中,整个类中均可以访问,类外无法直接访问
内存:成员变量随着对象的建立而建立,存在于对象所在的堆内存中。(成员变量与所属类的对象同生共死)
默认值:成员变量有默认值。
回收:随着对象的回收而回收 (当没有引用指向对象的时候,该对象会变成垃圾,被GC(垃圾回收器)在一个不定时间内回收走)
局部变量
定义位置:定义在局部范围(方法中,方法的形参,循环中)。
内存:局部变量存在于栈内存中。
默认值:没有默认值。
回收:随着作用域结束而回收,通常为语句或方法范围。
? 变量访问原则:就近原则(先访问局部变量,如果找不到局部变量就去找成员变量)
d.Java内存区域:
栈:局部变量
堆:new 出来的东西(new出来对象还有数组对象)
方法区:方法字节(描述)信息
常量池:常量池也属于方法区的一部分,存放常量(整数常量,字符常量,字符串常量)
e.变量的定义位置:
class Person{
private double height;
private String sex;//身高和性别属于人固有的属性,因此定义在成员位置上,更贴近于现实生活描述
//private Pen pen;//从现实生活角度考虑,pen不属于人的一部分,我们仅是使用pen去作画
//因此不把它定义在成员位置,而是定义在方法形参位置上
public void draw(Pen pen){
}
}
class Pen{
}
|
|