`
ljyyanyan
  • 浏览: 5711 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

构造方法

阅读更多

 

 

蓝杰学习之——

构造方法,this关键字,重载

在上构造方法这节课的时候,我对它还并没有什么深刻的印象,只觉得是把前一节课中创建对象时的new 类名(); 换了个说法而已。直到最近学了值传递和引用传递时才感觉到构造方法的重要性。

构造方法有两个作用,一是创建对象,二是传递参数(值)。

创建对象是指在写好类之后,于主函数中,创建类的对象,以便调用该类中的方法。格式为“类名对象名 = new 构造方法;(然后对象名.方法名();)”。而且用构造方法创建对象时,只需在括号中添加一个对象,就可以赋初值。通常情况下,也是我们刚开始的时候,固有的格式如以上所示,但其实,还可以有一种简略的写法new 构造方法.方法名();”。例如我们在写窗体时,用MyFrame继承JFrame,然后再调用MyFrameshowFrame()方法,就可以直接写作“new MyFrame().showFrame();

除了创建对象,构造方法的另一作用也使用得很频繁。我们编程,不局限于只有一个类的程序,程序一复杂,相应类的数量就会增多。如果我们在一个类中要使用其他类的方法,除了之前学的setget方法,还可以使用构造方法。相比较而言,构造器传参的代码比setget方法的要简单,能够减少代码数量。但是有一个缺陷,就是在继承接口时,穿的参数如果在创建得比继承接口的类要晚,那么便无法用构造方法传参,而只能用setget方法。所以说明,世上没有完美,有些事物,虽然可以简便我们的生活,但并非万能。

   

this关键字是在java中常用的,它指代该类中属性值。如果不加this关键字,那么系统默认指代的是离它距离最近的一个同名值,这样便在传参中出现麻烦。如我们在一个A类中定义了一个private A a;属性,现在我们要把B类中的A a传过来,那么就需要写道

public A(A a){

this.a = a;

 }

this.aa是指private A a中的a,等号后面的a是指括号中的a,即B类中的a参数。

除此之外,在一些继承中,在本类里调用被继承类的方法时,可直接写“this.方法名();”。

 

重载,顾名思义,就是将方法重新载入,所以方法名不变。但是要区别于已载入方法,故要求括号中的参数类型,参数个数,参数顺序至少有一个不同。例如我们定义一个attack()方法,可以attack (A)attack(B),可以attack(AB),还可以attack(BA)

重载和重写有很明显的区别,重载只是将方法重新载入,故方法名不变,但参数有区别。而重写是将父类中的方法重写,故以上要求全部相同,但方法体因为是重新写,所以方法体不同。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics