java构造方法的互相调用方式
java构造方法的互相调用
public Student(int age){ super(); this.age = age; } public Student(String name , int age){ /* super(); 注意,这里不能再调用super();因为下边的this(age);调用了上方的构造器,已经存在了 super();该构造器内不能再次调用。所以只写一个this(age)就够了; */ this(age); this.name = name; }
其他的小细节
构造方法体内调用父类构造器( super(); )或重载构造器( this(); )时,应放在方法体内的第一行。
构造方法及其重载
1.构造方法
类中有一种特殊的成员方法,其方法名与类名相同,称为构造方法。
通过构造方法可以完成对象的创建,以及实例变量的初始化。
下面是一个构造方法示例:
public class Puppy{ public Puppy( ) { } public Puppy(String name) { //这个构造器仅有一个name } }
每个类都有一个隐藏的无参构造函数。
public class Dog{ /** * 带参构造函数 * @param name * @param age */ public Dog(String name,int age){ this.age = age; this.name = name; } /** * 无惨构造函数 */ public Dog(){} String name; int age; public void ptint(){ System.out.println("name = "+this.name+";age = "+age); } public static void main(String[] args) { new Dog().ptint(); new Dog("花花",9).ptint(); } }
2.构造方法和对象的初始化
构造方法怎么调用,使用哪个运算符?
当使用new 运算符实例化一个对象时,系统为对象创建内存区域并自动调用构造方法初始化成员变量。
下面是new运算符实例化一个对象。
Puppy p = new Puppy( ); Puppy p1 = new Puppy(“张三”);
3.实例——用构造方法初始化成员变量
class Triangle { int x,y,z; public Triangle(int i,int j,int k) { x=i;y=j;z=k; public static bpplean judge(Triangle m) { if(Math.sqrt(m.x*m.x+m.y*m.y)= =Math.sqrt(m.z*m.z)) //引用Math类库的sqrt()方法 return true; else return false; } public static void main(String args[]) { Triangle t1=new Triangle(3,4,5); if(judge(t1)) //调用judge()方法,判断t1的成员变量是 //否能构成直角三角形的3条边长 System.out.println("这是一个直角三角形"); else System.out.Println("这不是一个直角三角形"); } }
4.构造方法的特点
- 构造方法名与类名必须一致,大小写也要一样。
- 构造方法没有返回值,void类型也不写。
- 在创建一个对象的时候,至少要调用一个构造方法。
- 构造方法不能显式地直接调用。
- 构造方法的主要作用是对对象初始化。
- 修饰符列表目前统一写:public。千万不要写public static。
5.构造方法重载
构造方法是支持方法重载的。在一个类当中构造方法可以有多个。并且所有的构造方法名字都是一样的。
对于实例变量来说,只要你在构造方法中没有手动给它赋值,统一都会默认赋值。默认赋系统值。
方法重载特点:
- 重载的方法必须在同一个类中
- 方法名相同
- 参数列表不同(不包含参数名不同)
- 方法的重载与访问修饰符和返回值类型无关
6.成员变量
类中的属性,也就是直接在类中定义的变量称作成员变量,它定义在方法外面。
局部变量就是定义在方法中的变量;一般情况下,局部变量在使用前需要赋值,否则会编译出错。
成员变量和局部变量的区别:
- 作用域不同。局部变量的作用域仅限于定义它的方法,在该方法外无法访问它;成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量。
- 初始值不同。成员变量在定义时可以不初始化,Java会给成员变量赋初始值;但是Java不会给局部变量赋初始值,因此在定义局部变量时必须初始化后再使用。
- 在同一个方法中,不允许有同名的局部变量,在不同的方法中可以有同名的局部变量。
- 局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的实例详解
这篇文章主要介绍了Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的实例详解的相关资料,需要的朋友可以参考下2017-09-09浅谈springboot中tk.mapper代码生成器的用法说明
这篇文章主要介绍了浅谈springboot中tk.mapper代码生成器的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09
最新评论