灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2640回复:0

[系统教程]JAVA基础教程(4)

楼主#
更多 发布于:2012-09-08 08:09


2.对象
类是创建对象的模板.当使用一个类创建了一个对象时,也就是说给出了这个类的一个实例.
(1)对象的创建:包括对象的声明和为对象分配内存空间
声明格式:类的名字  对象的名字;
分配内存空间格式;类的名字 对象的名字=new 类的名字();  例:

复制代码
class XiyoujiRenwu
{   float height,weight;
    String head, ear,hand,foot, mouth;
    void speak(String s)
{  System.out.println(s);
    }
}
class A
{   public static void main(String args[])
{  XiyoujiRenwu  zhubajie;       //声明对象
       zhubajie=new  XiyoujiRenwu(); //为对象分配内存,使用new 运算符和默认的构造方法
    }
}



复制代码
class Point
{  int x,y;
    Point(int a,int b)
{  x=a;
       y=b;
    }
}
public class A
{  public static void main(String args[])
{  Point p1,p2,p3;                 //声明对象p1和p2
      p1=new Point(10,10);         //为对象分配内存,使用 new 和类中的构造方法
      p2=new Point(23,35);  //为对象分配内存,使用 new 和类中的构造方法
      // p3=new Point(); 错误语句!当类中定义了一个或多个构造方法,那么java不提供默认的构造方法
}
}


(2)对象的内存模型
声明对象时,内存不分配空间,只存在一个空对象;当用new 分配内存空间时,类中的成员变量就会被分配到相应的空间中,并通过构造方法(如果有)初始化,函数的入口地址也会被载入内存.但此时局部变量不会被分配内存空间,只有当对象调用类中的函数时,函数中的局部变量才被分配空间,但函数执行完后,局部变量释放内存,所以如果在函数中没有对局部变量进行初始化,就没有默认值,因此在使用局部变量之前,要事先为其赋值.    
创建多个对象之间没有相互状态影响,个用个自的内存空间.
(3)对象的使用
对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为.
通过使用运算符" . "对象可以实现对自己的变量的访问和方法的调用.具体使用如程序例子:

复制代码
class XiyoujiRenwu
{   float height,weight;
    String head, ear,hand,foot,mouth;
void speak(String s)
{  head="歪着头";
       System.out.println(s);
    }
}
class Example4_3
{    public static void main(String args[])
   {  XiyoujiRenwu  zhubajie,sunwukong;//声明对象
        zhubajie=new  XiyoujiRenwu();  //为对象分配内存
    sunwukong=new  XiyoujiRenwu();
        zhubajie.height=1.80f;         //对象给自己的变量赋值
        zhubajie.head="大头";
        zhubajie.ear="一双大耳朵";
        sunwukong.height=1.62f;        //对象给自己的变量赋值
        sunwukong.weight=1000f;  
        sunwukong.head="绣发飘飘";
        System.out.println("zhubajie的身高:"+zhubajie.height);
        System.out.println("zhubajie的头:"+zhubajie.head);
        System.out.println("sunwukong的重量:"+sunwukong.weight);
        System.out.println("sunwukong的头:"+sunwukong.head);
        zhubajie.speak("俺老猪我想娶媳妇");          //对象调用方法
        System.out.println("zhubajie现在的头:"+zhubajie.head);
        sunwukong.speak("老孙我重1000斤,我想骗八戒背我");   //对象调用方法
        System.out.println("sunwukong现在的头:"+sunwukong.head);
   }
}




复制代码
class 梯形
{   float 上底,下底,高,面积;
    梯形(float x,float y,float h)
{  上底=x;
       下底=y;
       高=h;
    }
    float 计算面积()
{  面积=(上底+下底)*高/2.0f;
       return 面积;
    }
    void 修改高(float height)
{  高=height;
    }
    float 获取高()
{  return 高;
    }
}
public class Example4_4
{  public static void main(String args[])
{  梯形 laderOne=new 梯形(12.0f,3.5f,50),laderTwo=new 梯形(2.67f,3.0f,10);
      System.out.println("laderOne的高是:"+laderOne.获取高());
      System.out.println("laderTwo的高是:"+laderTwo.获取高());
      System.out.println("laderOne的面积是:"+laderOne.计算面积());
      System.out.println("laderTwo的面积是:"+laderTwo.计算面积());
      laderOne.修改高(10);
      float h=laderOne.获取高();
      laderTwo.修改高(h*2);
      System.out.println("laderOne现在的高是:"+laderOne.获取高());
      System.out.println("laderTwo现在的高是:"+laderTwo.获取高());
      System.out.println("laderOne现在的面积是:"+laderOne.计算面积());
      System.out.println("laderTwo现在的面积是:"+laderTwo.计算面积());
    }
}




static的用法和包



喜欢0 评分0
游客

返回顶部