面向对象(2)
静态变量和静态函数
静态变量
让各对象共有的内容只用一个空间保存。
方法:在其定义前加上关键字static。
For example:
Class Customer{
String name;
Static String bankName;
}
静态变量可以通过“对象名.变量名”来访问。也可以用“类名.变量名”来访问,一般情况下推荐用“类名.变量名”来访问,而非静态变量不能用其访问。静态变量在类被载入时创建,只要类存在,静态变量就存在,不管对象是否被实例化。
作用:
保存跨对象信息,存储对象个数。
静态函数
方法:在普通函数的定义前加上关键字static。
For example:
Static void setBankName(String bankName){
Customer.bankName=bankName;
}
静态函数通过“类名.函数名”也可以通过“对象名.函数名”来访问,推荐用前者。
在静态函数调用是对象还没有创建,因此在静态函数中不能直接访问类中的非静态成员变量和成员函数,也不能使用关键字this。
静态代码块
对所有对象的共同信息进行初始化,并对所有对象只执行一次的机制。
For example:
Static{
bankName=”香港银行”;
System.out.println(“静态代码块执行”);
}
当类被载入时,静态代码块被执行,且只被执行一次,静态代码块经常用来经行类属性的初始化。
认识封装
封装是面向对象的基本特征之一。
使用封装来完善对象的使用,在赋值时判断是否符合常识或其他条件。
方法:
将不能暴露的成员隐藏起来,在定义前加上修饰符private
用公共方法来暴露对隐藏成员的访问,给函数加上修饰符public,将该方法定义为公共的。
For example:
class Customer {
String name;
String sex;
private int age;
public void setAge(int age){
if(age<0||age>100){
System.out.println("age无法赋值”);return;
}
this.age = age;
}
public int getAge(){
return this.age;
}
}
public class EncTest2 {
public static void main(String[] args){Customer zhangsan = new Customer();
Zhangsan.setAge(25);
System.out.println(“zhangsan,age=”+zhangsan.getAge)
}
}
私有成员只能在定义它的类的内部被访问,在类的外部不能被访问,一般情况下,可以将成员变量定义为private的,通过public函数(方法)对其进行访问。例如要给一个成员赋值,可以使用setter函数,如上面的setAge函数;要获得该变量的值,可以使用getter函数,如上面的getAge函数,private和public都是访问区分符。
使用访问控制修饰符
public class Customer{
String name;
String sex;
Int age;
}
在不写public的情况下属于默认访问修饰,此时该类只能被同一包中的所有类识别,如果写了public,该类则是一个公共类,可以被包内,包外的所有类识别
在一个Java文件中最多只能有一个public类,所以类名和文件名必须相同。
成员的访问控制修饰符
对于成员来说,访问控制修饰符共有4个,分别是private,defoolt,proteted,public,示例代码如下。
public class Customer{
private String name;
String sex;
protected int age;
public void display( ) {}
}
name成员为private类型,sex成员为default类型,age成员为protected类型,display成员为public类型。其中,default类型的成员前面没有任何修饰符。
其特性如下。
(1) private类型的成员只能在定义它的类的内部被访问。
访问。定义它的类的内部被访问,也可以被这个包中的其他类
(3) protected类型的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。关于子类,将在后面章节讲解。
(4)public类型的成员可以在定义它的类的内部被访问,也可以被包内、包外的所有其他类访问。
很明显,从开放的程度上讲,private<default<protected<public.
继承
1.但每个子类又都有自己独特的属性。
2.子类就是一个父类,因为班长也是学生,小组长也是学生,所以子类也是父类。
关系就是:is-a(子类 is a 父类)
继承性的三个特点
1.JAVA语言是单继承的,直接父类只能有一个
2.JAVA语言可以多级继承
3.一个父类可以拥有多个子类
父类定义格式
public class 类名称()
子类定义格式
public class 类名称 extends 父类名称()