这篇文章给大家介绍this中super构造方法怎么在Java中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
成都创新互联公司科技有限公司专业互联网基础服务商,为您提供西部信息机房,高防物理服务器租用,成都IDC机房托管,成都主机托管等互联网服务。1、构造方法
定义:与类同名没有返回值的方法称为构造方法;
public class test1 { private String name; private int age; public test1(){ } }
上面的test1()是默认构造方法,即使没有定义java虚拟机在运行的时候也会自动生成,
当然如果定义了重载的构造方法便不会自动生成;
构造方法的作用有两点1.通过构造方法建立一个对象;2.通过构造方法可以快速的赋初值;
public class Main { public static void main(String[] args) { test1 t1=new test1();//new后面加上构造方法建立了一个对象 } }
而如果类中有其它属性的话可以有构造方法的重载:
public test1(String name, int age) { this.name = name; this.age = age; }
利用重载的构造方法可以很快速的给对象赋初值,特别是对于private的属性,如果用getter和setter很不方便;
public static void main(String[] args) { test1 t1=new test1(); test1 t2=new test1("bob", 18); System.out.println(t1); System.out.println(t2); }
输出结果:
test1 [name=null, age=0]
test1 [name=bob, age=18]
t1没有赋初值所有它里面的值是系统设置的初值;
t2利用有参的构造方法,直接给属性设置了初值,非常的方便,就不用setter方法来一个个设置值;
2. this
谁调用指向谁,是指向调用的对象;
举例说明:
在上面的test1 类中加上以下fly()方法:
public void fly(){ System.out.println(this.name+"会飞");//this指向调用的对象 }
在运行中调用:
public static void main(String[] args) { test1 t1=new test1(); test1 t2=new test1("bob", 18); t1.fly();//方法中的this指向t1 t2.fly();//方法中的this指向t2 // System.out.println(t1); // System.out.println(t2); }
结果如下:
null会飞
bob会飞
另外this还需要注意的一点是用在构造方法中:
public test1(String name, int age) { this();//在运行构造方法进行属性赋值前是一定会先调用无参数的构造方法 this.name = name; this.age = age; }
当然构造方法调用主要看this(参数列表)看圆括号里面的参数列表和哪一个构造方法相同就执行哪一个构造方法;
2. super:指向父类,调用父类的属性和方法;
其实使用起来和this关键字差不多;
public test1(){ super(); }
上面的super(()调用的是父类的构造方法,如果没有继承父类的话,那么它的父类是指向object(所有类的超类);
使用:suiper关键字加“ . ”可以访问父类可以访问的属性和方法,一般用于区分被子类重写了的方法;
使用this(参数列表)和super(参数列表)的构造方法注意事项:
a. 只能够位于构造方法的第一行;
b. 不能同时出现在一个构造方法中;
c. 总是会先访问完父类的构造方法在访问子类里面的构造方法;
关于this中super构造方法怎么在Java中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
标题名称:this中super构造方法怎么在Java中使用-创新互联
标题URL:https://www.cdcxhl.com/article10/dpgodo.html
成都网站建设公司_创新互联,为您提供建站公司、用户体验、微信小程序、企业建站、品牌网站建设、自适应网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联