思否学否

构造函数
 1 public class Demo {
 2   private int x;
 3   private String string;
 4   public Demo(int x) {
 5   this.x = x;
 6 }
 7   public Demo(int x,String string){
 8     this(x); //一个类的构造器调用这个类中的其他构造器
 9 
10        this.string=string;
11   }
12 }

 1、构造函数void返回(构造函数可被重载,但不能被重写

构造函数返回类型不可指定,如果你在构造函数前面写上void ,那么构造函数就变成无效的了,但不会报错。因为构造函数的作用就是要生成一个类的对象,这个生成的对象的指针要返回给系统,如果写成void,那么构造函数就无任何返回。

eg:

 1 class Scope {
 2  
 3 String s="11";
 4 
 5 void Scope() {  //注意此处构造函数添加了void,但不会编译错误,也不会运行错误
 6   s = "constructor";
 7 }
 8 public static void main(String[] args) {  //注意此处main函数声明必须是public static void,否则运行出错!
 9 Scope m = new Scope();
10 m.go();
11  }
12 
13  void go() {
14  System.out.println(s);
15  }
16 }

结果是:

可以看出在构造函数前面写上void ,那么构造函数就变成无效。

2、构造函数void形参

 

public class Scope{

public static void main(String[] argv){
System.out.println("two");
Scope a=new Scope();
                  }

Scope(void){  //构造函数参数void会导致编译报错
System.out.println("tq");
}
Scope(){
System.out.println("tq1");
}
}

 

 

 

 

this表示是当前类对象。类方法是指用static修饰的方法,普通方法叫对象方法。

 构造方法每次都是构造出新的对象,不存在多个线程同时读写同一对象中的属性的问题,所以不需要同步 。

 容器保存的是对象的引用

 
如果父类中的某个方法使用了 synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上 synchronized关键字才可。当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了

posted on 2019-11-22 21:07  思否学否  阅读(324)  评论(0编辑  收藏  举报