this关键字、引用传递与值传递、接口与抽象类总结

this关键字、引用传递与值传递、接口与抽象类总结

一、this关键字

1.含义:指的是当前方法对应的对象。

例:

         public class Student{

                  private String name;

                  public void setName(String n){

                          this.name = n;

}

}

这里this即指调用setName()方法是的对象。

2.作用:

1、区分方法中同名的参数与属性

例:public Student(String name){

           this.name = name

           }

这里的this把参数与属性加以区分,否则根据就近原则,等号两边的name都会被当做参数name处理。

2、调用本类中重载的构造方法

例:public student(){

           this名字);

}

public studentString name{

           this.name = name;

}

这里this名字);语句调用了下面的另一个构造方法。

二、值传递与引用传递

1.值传递:

1、适用于8个基本数据类型(byteintshortlongcharfloatdoubleboole String

2、特点:单项传递,传递数值,传递后互不影响

2.引用传递(参数传递)

         1、适用于对象、数组

         2、由于对象名是储存的是对象的首地址,所以对象作为参数传递或整体赋值时,其地址被传递给形参或变量名,两变量名指向同一存储空间所以对新对象的操作直接作用于原对象。

         3java中,当对象名指向发生变化,使得没有任何变量名指向原对象时,系统的垃圾及回收机制(GC)会启动,释放掉该对象的内存空间。

例:public class Student(){

                 private String name;

                 public void playWithStudent s{}

}

Student stu1 = new Student();

         Student stu2 = new Student();

         stu1.playWith(stu2)

         stu2 = stu1;

执行stu1.playWith(stu2);时,stu2存储的地址被赋给形参s,两者共用一片存储空间;

执行stu2 = stu1;时,stu1存储的地址被赋给形参stu2,同时stu2所指的对象空间被释放。

二、接口与抽象类

1.      接口:

1、定义格式:

public interface 接口名 extends 接口名,... {

                    //常量

                    public static final 数据类型  常量名 = ;

                    //抽象方法

                    public 返回值数据类型方法名(数据类型参数名,...);

           }

2、实现格式

public class 类名   extends 类名   implements 接口名,... {

        

     }

同时,必须实现接口中所有的抽象方法,否则仍有抽象方法,无法作为类。

                  2、注意:

1.只能定义常量和抽象方法。

                  2.接口中默认的访问修饰符是public

                  3.常量名的每一个字母要全部大写。

                  4.接口可以继承接口,而且可以同时继承多个接口。

                  5.接口不能用来实例化对象。(因为有抽象方法)

         例:public interface ButtonListener extends ActionListener{

}

public class MyListener implements ButtonListener{

                  publicvoid actionPerformed(ActionEvent e) {

    }

}

2.      抽象类

1、定义格式:

public abstract class 类名extends 类名implements 接口名{

  public abstract 方法名();

}

2、注意:抽象类是介于接口与类之间的类型,含有抽象方法,也不能实例化对象。

定义抽象方法时abstract不能省略;定义时必须先继承类再继承接口。

猜你喜欢

转载自t1174779123.iteye.com/blog/1848110