java中的构造方法,this、super的用法
2018-07-17 03:58:35来源:博客园 阅读 ()
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. 总是会先访问完父类的构造方法在访问子类里面的构造方法;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:创建线程的三种方式
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash