首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

种与对象的总结

2012-12-21 
类与对象的总结1.对象是具体存在的实体,具有明确定义的状态和行为;而类则是对象所具有的方法和属性。 类是

类与对象的总结
1.对象是具体存在的实体,具有明确定义的状态和行为;而类则是对
象所具有的方法和属性。 类是对象的抽象,而对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是一
个模板,同时类也是一种自定义的数据类型。
如创建一个学生类:
public class Student{
//定义名称和分数属性
  private String name;
  private int score=0;
//设置名称的方法
  public void setName(String n){
     name = n;
  }
  //学习的方法
  public void study(){
     score+=10;
     system.out.println(name+"正在学习中......");
  }
  //玩游戏的方法
  public void play(){
     score-=5;
     system.out.println(name+"正在玩游戏中......");
  }
  //获取分数的方法
  public int getscore(){
     return score;
  }
}

//定义一个老师类
public class teacher{
  public static void main(String[] args){
  //创建一个stu对象
     Student stu = new student();
     stu.setName("张三");
     for(int i=0;i<5;i++){
        stu.study();
     }
     for(int i=0;i<6;i++){
        stu.play();
     }
     stu.getscore();
}



2.重载
每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表
(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内
定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,
就称作重载。即重载时相同名称成员的参数列表是不相同的(参数顺序和
类型)。 在重载中,多个同名方法中参数类型和个数不同。
如:
public void study(int score,int hour){
    score+=hour/2;
    system.out.println("正在学习中......");
}
public void study(int score){
    system.out.println("没学到什么");
}

      覆盖
  它是子类中的一个方法覆盖了父类中的一个方法并且对其重写,以求达到不同的作用。对我们来说最
  熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,
  而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法
  以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以
  下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆
盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者
是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,
并没有对其进行覆盖。
如:
public setName(String name){
     this.name = name;
}

   多态
多态指的是相同类型的对象调用相同的方法的时候,由于继承和重写,得到的
结果不一定相同。




3.值传递与引用传递的区别
基本数据类型赋值属于值传递;引用类型之间赋值属于引用传递。
值传递传递的是实实在在的变量值;引用传递传递的是对象的引用地址。
值传递后,两个变量改变的是各自的值;引用传递后,两个引用改变的是同一个对象的状态。
如:
值传递->
public class Student{
   public void ChangeInt(int t){
        t = 100;
   }
}

public class teacher{
   public static void main(String[] args){
        Student stu = new Student();
        int i=1000;
        stu.ChangeInt(i);
        system.out.println("i现在的值为: "+i);
   }
}
输出结果i为1000.

引用传递->
//创建一个student类
public class Student {
private String name;
public void setname(String n){
name = n;
}
public String getname(){
return name;
}

}

//创建一个Teacher类
public class Teacher {
public void changeName(Student st){
String newName = "改名字";
st.setname(newName);
}
public static void main(String[] args){
Student stu = new Student();
stu.setname("第一个");
Teacher te = new Teacher();
te.changeName(stu);
String name = stu.getname();
System.out.println("调用后的名字是: "+name);
}

}  
输出结果为 :改名字
 

热点排行