一、类的基础
类的定义: <修饰符> class <类名>{}
实例创建:类名 变量名 new <类名>(实参表)
类属性修饰符:公共 public
抽象 abstract(抽象类不能够创建实例,一般要被扩展产生子类)
最终 final(注:一个类不能同时用abstract和final修饰符修饰)
(注:仅有上面三种修饰符)
一个java文件中至多只能有一个public 类,且该类名必须与文件名匹配,如果有main方法,则只有main方法所在的类可以去选择是public,还是缺省的...(这时其它类不能是public);如果一个java文件中没有public类,则文件名没有要求。
二、类中的方法属性和类和方法的访问控制
<一>方法属性
方法属性的修饰符包括static、final、abstract、native、synchronized、public、private protected。
方法:是类的动态属性,标志了类所具有的功能和操作。小括号是方法的标志。
简单介绍一下一些方法:
<1> 抽象方法:
修饰符abstract修饰的抽象方法是一种仅有方法头,而没有具体的方法体和操作实现的方法。使用抽象方法的目的是使所有的子类,对外都呈现一个相同名字的方法,是一个统一的接口。所有的抽象方法,都必须存在于抽象类之中。
<2> 静态方法:
用static修饰符修饰的方法,是属于整个类的类方法,不用的是对象或实例的方法。调用这种方法时,应该使用类名作前缀;这种方法在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有;只能处理属于整个类的成员变量。
<3> 最终方法:
用final修饰符修饰的类方法。功能和内部语句不能再更改的方法,不能再被继承。
注意:所有已被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被缺省地认为是final的。
<4> 本地方法:
用native修饰符声明其他语言书写方法体并具体实现方法功能的特殊的方法。这里的其他语言包括C/C++/FROTRAN/汇编等。由于native的方法的方法体使用其他语言在程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。
<5> 同步方法: 如果synchronized修饰的方法是一个类的方法(即static的方法),那么在被调用执行前,将把系统类Class中对应当前类的对象加锁。如果synchronized修饰的是一个对象的方法(未用static修饰的方法),则这个方法在被调用执行前,将把当前对象加锁。 Synchronized修饰符主要用于多线程共存的程序中的协调和同步。
<二>访问控制符
访问控制符是一组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只有一个public,域和方法的访问控制符有四个,分别是public、private、protected、private protected,另外还有一种没有定义专门的访问控制符的缺省情况。
<1> 公有访问控制符public:
Java的类是通过包的概念来组织的,包氏类的一个松散的集合。处于同一个包中的类可以不需要任何说明而方便的互相访问和引用,而对于不同包中的类,则不行。但当一个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用import语句引入public类,就可以访问和引用这个类。类中被设定为public的方法是这个类对外的接口部分,避免了程序的其他部分直接去操作类内的数据,这实际就是数据封装思想的体现。
每个Java程序的主类都必须是public类,也是基于相同的原因。
用public修饰的类的域称为公共域。如果公共域属于公共类,则它能被所有的其他类所引用。public修饰符会造成安全性的数据封装性下降,所以一般应减少public域的使用。
<2> 缺省访问控制符:
缺省访问控制权规定,该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性。同样道理,类内的域或方法如果没有访问控制符来限定,也就具有包访问性。 简单说,定义在同一个程序中的所有类属于一个包。
<3>私有访问控制符private :
用private修饰的域或方法只能被该类自身所访问和修改,而且不能被任何其他类(包括该类的子类)来获取和引用。private修饰符用来声明那些类的私有成员,它提供了最高的保护级别。
<4>保护访问控制符protected :
用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中该类的子类来访问父类的特定属性。(这才是protect修饰符的主要目的)
<5>私有保护访问控制符 private protected :
用private protected修饰的成员变量可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类。把同一个包内的非子类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,而不是松散地组合在一起的包。
三、object类
object类是类层次树的根,所有其他类都是从Object类直接或间接派生出来的。因此所有的对象都具有Object类中定义的一些属性和方法。
其中的方法有:public boolean equals(Object obj)//比较两个对象是否相同
protected Object clone()//生成当前对象的一个副本
protected void finalize()//定义回收对象时所需完成的清理工作
public String toString()//返回描述当前对象的字符串信息
还有wait,notify,notifyALL方法.
四、构造方法(也叫构造器,或构造函数)
构造方法的主要功能是:在创建实例时去初始化一个对象,这样可确保每个对象都会被初始化,如果有多个构造方法,我还可以去有选择的初始我即将实例的对象(这是非常有效的,它避免了去初始化需要执行多步操作的问题,因为这样只需一步,大大提高了代码的效率!)当要去实例化一个对象时,如果该类具有构造方法,java就会在用户有能力操作对象之前自动调用相应的构造方法,这样就会保证初始化的进行!我们在初识构造方法时,会觉得它和成员方法相同,其实构造方法与成员方法有着本质的区别。构造方法主要用于初始化实例的状态,而成员方法是对象的一个行为。
构造方法与成员方法的区别:
构造方法只有访问修饰符public、protected、private,不能使用其他修饰符;
构造方法没有返回类型,而普通方法则一定有(包括void);(构造方法的返回类型可以被认为是类类型本身)
构造方法 的方法名只能是类名,而普通方法的方法名则一般不采用类名;
构造方法是在生成实例时使用,而成员方法是在实例化对象后被对象所调用。
再简单介绍一些构造器的规则:
<1>如果一个类没有设置字定义构造器,那么编译器会默认一个无参构造器;
<2>在子类调用构造器时,总是先调用基类的构造器;
<3>如果自定义了构造器,那么默认构造器将不存在 。
阅读(2632) | 评论(0) | 转发(0) |