类的基本结构
1:类有两种基本成分,变量和方法,称为成员变量和成员方法。类的成员变量可以是基本类型的数据或数组,也可以是一个类的实例。方法只能是类的成员,只能在类中定义。调用一个类的成员方法实际上是进行对象之间或用户与对象之间的消息传递。
Java中类的定义可以分为两部分:类声明与定义。
类声明主要是声明了类的名字以及类的其他属性。public,abstra,final说明了类的属性。public属性指明任意类均可以访问这个类,如果声明中没有public,只有与该类定义在同一个包中的类才可以访问这个类。
JAVA中类的封装与信息隐藏
具体是通过对类的成员限定访问权限来实现。JAVA中用于类成员的访问权限有四种,public,protected,private以及默认权限(没有任何权限定义符)。使用private,只能在同一个类的成员方法中使用,其他类的方法禁止访问,从而实现了类的数据隐藏。如果使用了public那么就能够使外界任何类都可以对这个成员进行访问。
JAVA中通过上述类成员的访问权限机制,使用private权限定义符将类内部的数据隐藏起来,只允许类自身的方法对其操作,然后通过public,protected,默认权限将这些方法作为类的接口裸露出来,使得外界只能通过这些接口访问类的的数据。这样一个类的数据和操作数据的方法就结合成为了一个整体,实现了封装。
具体代码
package test;//这是一个包,把你写的东西放到这个里面,要是需要用到的时候就要先找到这个包,然后再去里面找要用的方法
class MyData{
private
int day;
int month;
int year;
public String getData(){
return day+"/"+month+"/"+year;
}
public int setData(int a,int b,int c){
if((a>0&&a<=31) && (b>0&&b<=12)){
day = a;
month = b;
year = c;
return 0;
}
else{
return 1;
}
}
}
public class UseMyDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyData d = new MyData();//创建一个新的类
if(d.setData(22,5,2009)==0){
System.out.println(d.getData());
}
}
}
java有默认的构造函数,但是C++虽然有默认的构造方法,但是初始值是不一样的
数值型 0
boolean false
char '\0'
对象 null
成员变量
当一个变量的声明出现在类体重并不属于任何一个方法,则该变量所属类的成员变量。成员变量完整声明格式
[public][protected][private][static][final][transient][volatile] type varibleNmae;
其中修饰符public,protected或private说明了该对象成员变量的访问权限;static用来限制该成员变量为类变量,没有用static修饰的成员变量为实例变量;final用来声明一个常量,不能改变其值。volatile很少用到。transient用来声明一个暂时性的变量。
成员方法
JAVA中的方法的定义与C和C++很相似,包括两部分:方法声明和方法体。
方法声明的完整格式
[<accesLevel>][static][final][abstract][synchronized]<return_type><name>([<argument_list>])[thorws<exception_list>]{
block
}
其中accessLevel与成员变量相同,可以使用public,protected或private限制对成员方法的访问权限,static限定它为类方法,而实例方法不需要static限定词。abstract表明方法是抽象方法,没有实现体。final指明方法不能被重写。native表明方法是用其他语言来实现。synchronized用来控制多个并发线程对共享数据的访问。最简单的方法声明只需要包括方法名和返回类型,返回值可以是任意的Java数据类型。当一个方法不需要返回值时,返回类型为void。
方法体
方法体是对方法的实现。它包括局部变量的声明以及所有合法的java语句。
方法体中可以声明该方法中所用到的局部变狼,它的作用域只在该方法内部,当方法返回时,局部变量也就不再存在。如果局部变量的名字和类名的成员名字相同,则类的成员变量会被隐藏。如果要将该类成员变量显露出来,则需要在该变量前加上修饰符this,this是指向当前对象自身
package test;//这是一个包,把你写的东西放到这个里面,要是需要用到的时候就要先找到这个包,然后再去里面找要用的方法
class MyData{
private
int day;
int month;
int year;
public MyData(int day,int month,int year){
this.day = day;
this.month = month;
this.year = year;
}
public String tomorrow(){
this.day = this.day + 1;
return this.day+"/"+this.month+"/"+this.year;
}
}
public class UseMyDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyData d = new MyData(12,4,2009);//创建一个新的类
//if(d.setData(22,5,2009)==0){
// System.out.println(d.getData());
//}
System.out.println(d.tomorrow())
; }
}
java中所有的类都有构造方法,其有四种访问权限,public,protected,private,没有访问权限指定。
public:任何类都能够创建这个类的实例对象
protected:只有这个类的子类以及与该类在同一个包中的类可以创建这个类的实例对象
private:没有其他类可以实例化该类,此时这个类中可能包含有一个public权限的方法。只有这些方法可以构造该类的对象。