zoukankan      html  css  js  c++  java
  • 构造器

    public class Test2 {
    	/**
    	 * 创建一个类,他包含了一个在定义时就被初始化了的string域, 以及另一个通过构造器初始化了的string域,这两种的方式有何差异
    	 */
    	String st1 = new String("你好");
    	Test2() {
    
    	}
    
    	Test2(String i) {
    		this.st1 = new String("我爱你");
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    Test2 ts1=new Test2();
    System.out.println(ts1.st1);
    Test2 ts2=new Test2("我爱你");
    System.out.println(ts2.st1);
    	}
    
    }

    创建一个类,他包含了一个在定义时就被初始化了的string域, 以及另一个通过构造器初始化了的string域,这两种的方式有何差异?

    当我们创建了构造器时,系统是不会再为我们创建默认构造器的。所以如果我们还需要使用默认构造器(无参构造器)时一定需要我们自己来创建。构造函数是在对象创建时调用,它会覆盖类定义初始化的String

    此方法应根据不同的基本数据类型(作为参数列表)进行重载,根据被调用的版本,它打印出不同类型的狗吠(barking)、咆哮(howling)等信息。在测试类里编写main()方法来调用所有不同版本的方法。
    public class Dog{
    	 public static void main(String[] args) {
    	  barking();
    	  barking("汪汪汪");
    	  barking(5);
    	  howling();
    	  howling("老虎");
    	  howling("老虎",10);
    	 }
    
    	public static void barking(){
    	  System.out.println("狗吠");
    	 }
    	 
    	 public static void barking(String str){
    	  System.out.println("狗吠"+str);
    	 }
    	 
    	 public static void barking(int number){
    	  System.out.println(number+"只狗在吠");;
    	 }
    	 
    	 public static void howling(){
    	  System.out.println("咆哮");
    	 }
    	 
    	 public static void howling(String animal,int number){
    	  System.out.println(number+"只"+animal+"在咆哮");
    	 }
    	 
    	 public static void howling(String animal){
    	  System.out.println(animal+"在咆哮");
    	 }
    	}
    
    编写一个类,拥有两个静态字符串域,其中一个在第一处初始化,另一个在静态块中初始化。现在,加入一个静态方法用以打印出两个字段值。请证明它们都会被使用之前完成初始化动作
    public class Test5 {
    	String str = new String("我爱你");
    	Test5(String str) {
    		System.out.print(str);
    	}
    
    	static void print() {
    		Test5 test = new Test5("你好");
    		System.out.println(test.str);
    	}
    	public static void main(String[] args) {
    		print();
    	}
    }
    /**
     * 请证明加载类的动作仅发生一次,证明该类的第一个实体
     * 的创建或者对static成员的访问都有可能引起加载*/
    class A {
    	static int j = printInit("A.j initialized");
    
    	static int printInit(String s) {
    		System.out.println(s);
    		return 1;
    	}
    
    	A() {
    		System.out.println("A() constructor");
    	}
    }
    
    class B extends A {
    	static int k = printInit("B.k initialized");
    
    	B() {
    		System.out.println("B() constructor");
    	}
    }
    
    class C {
    	static int n = printInitC("C.n initialized");
    	static A a = new A();
    
    	C() {
    		System.out.println("C() constructor");
    	}
    
    	static int printInitC(String s) {
    		System.out.println(s);
    		return 1;
    	}
    }
    
    class D {
    	D() {
    		System.out.println("D() constructor");
    	}
    }
    
    public class LoadClass extends B {
    	static int i = printInit("LoadClass.i initialized");
    
    	LoadClass() {
    		System.out.println("LoadClass() constructor");
    	}
    
    	public static void main(String[] args) {
    		// accessing static main causes loading (and initialization)
    		// of A, B, & LoadClass
    		System.out.println("hi");
    		// call constructors from loaded classes:
    		LoadClass lc = new LoadClass();
    		// call to static field loads & initializes C:
    		System.out.println(C.a);
    		// call to constructor loads D:
    		//D d = new D();
    	}
    }


  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3217807.html
Copyright © 2011-2022 走看看