面向对象进阶
要点:
类的成员变量和类变量的区别:
类的成员分为属性和方法,属性其实就是类的成员变量,也称为全局变量,除了类的成员变量外,类的方法也可以声明变量,我们称局部变量。
成员变量分为类属性和实例属性两种,未加static修饰符的就是实例属性,代表该类的每个对象都拥有该属性;加了static修饰的属性,则为类属性,属于类所以,整个项目仅此一份,属于共享使用。
this关键字和方法调用:
在类的定义时通过this关键字可以访问到该类的实例属性,this其实就一个指向当前类的对象的地址。
最大的作用:让类中的一个方法访问该类中的另一个方法或实例成员变量。
注意:当成员变量和局部变量重名时,为了区分,成员变量使用时加上this关键字。
this不能和static静态关键字一起使用,
static修饰的成员不属于任何对象所以,而属于类所有。
类的成员封装:
封装是面向对象三大特征之一,封装的主要意思:
将该隐藏的隐藏,该开放的开发。
封装的意义:
目的是提高项目中属性或方法的安全性,隐藏内部实现细节。
目的:
- 隐藏类的实现细节
- 让使用者能通过事先预定的方向访问数据
- 可以对数据进行检查提高数据的可用性
- 便于修改,提高代码的可维护性
类中的静态方法和静态代码块
标题静态方法和静态代码块:
类包括加载和实例化两个阶段,当一个类被加载至JVM中,静态成员会被初始化,被static修饰的成员即为静态成员。
静态成员包括:静态代码块·静态属性和静态方法。
静态成员不属于某个对象,仅属于静态成员所在成员的类,整个项目中是公用的,仅此一份。
注意:
在静态环境中是不能直接访问到实例成员的,应为实例成员是属于对象所有,而static修饰的静态成员的是直接归属类所有。
练习代码:
public class fate {
private String name;
private String sex;
private int age;
public void setName(String name){
System.out.println(name);
}
public void setSex(String sex){
if(sex != "男" && sex != "女"){
sex = "男";
System.out.println(sex);
return ;
}else if(sex == "男"){
sex = "男";
System.out.println(sex);
return;
}else {
sex = "女";
System.out.println(sex);
return;
}
}
public void setAge(int age){
System.out.println(age);
}
}
public class fgo {
public static void main(String[] args) {
fate r = new fate();
r.setName("张三");
r.setSex("男");
r.setAge(19);
}
}
public class Test {
private String zymc;
private String zybh;
private int zynx;
public void fangFa1(String zymc){
System.out.println(zymc);
}
public void fangFa2(String zybh){
System.out.println(zybh);
}
public void fangFa(int zynx){
if(zynx < 0){
zynx = 0;
System.out.println(zynx);
return;
}else if(zynx > 60){
zynx = 60;
System.out.println(zynx);
return;
}else{
System.out.println(zynx);
}
}
}
public class Text1 {
public static void main(String[] agrs){
Test t = new Test();
t.fangFa1("计算机科学与技术");
t.fangFa2("J001");
t.fangFa(70);
}
}
注意:作业代码的实现要分开进行编写。