Java构造方法
2021-05-15 15:27
标签:his 编写 父类 strong ble java 没有 类型 定义 构造方法的特征: ? 具有与类相同的名称 ? 不能含有返回值类型,也不能是void的 ? 不能在方法中用return语句返回一个值 ? 在实例化时,它会由系统自动调动(类是对象的抽象,对象是类的实例化) ? 若编写代码时,类中没有编写构造方法,系统会自动生成一个构造方法 构造方法的定义: 构造方法是Java创建的伪方法,是一种实例方法,名称与其类名相同,是通过new关键字来调用。 构造方法的执行顺序: 在创建对象时,对象所在类的所有属性会首先进行初始化,在类的所有成员初始化完成后,才调用对象所在类的构造方法创建对象,构造方法的功能就是初始化。 e.g 其中第3,4行的方法就是构造方法。 构造方法的调用: e.g 其运行结果为: 注意:在子类中只实例化了一个子类对象。从输出结果来看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。故而,程序自动调用其父类的默认构造方法。 e.g 其运行结果为: 在main()方法中实例化了一个Two类的对象。但程序在初始化Two类的对象时,并非先调用Two类的构造方法,而是先初始化Two类的成员变量。这里Two类有3个成员变量,它们都是One类的对象, 所以要先调用3次One类的相应的构造方法。最后再初始化Two类的对象。 构造方法的重载 ? 一个类的构造方法可以有多个,允许重载 ? 每个类至少有一个构造方法,如果用户没有定义,系统自动产生一个默认构造方法,没有参数,也没有方法体。 ? 用户可以定义构造方法,如果定义了构造方法,则系统不再提供默认构造方法。 ? 构造方法一般是public,不可以定义为private。 关于构造方法重载的一个案例: 其运行结果为: Java构造方法 标签:his 编写 父类 strong ble java 没有 类型 定义 原文地址:https://www.cnblogs.com/wangjiong/p/9750721.html 1 public class Circle {
2 double radius=1.0;
3 Circle(){}
4 Circle(double radius){
5 this.radius=radius;
6 }
7 void getRadius(){
8 System.out.println(radius);
9 }
10 double getArea(){
11 return radius*radius*3.14;
12 }
13 double getPerimeter(){
14 return 2*3.14*radius;
15 }
16 }
1 class SuperClass{
2 SuperClass(){
3 System.out.println("SuperClass的构造方法");}}
4
5 public class SubClass extends SuperClass{
6 SubClass(){
7 System.out.println("SubClass的构造方法");}}
8
9 public static void main(String[] args){
10 SubClass sub =new SubClass();}}
1 class One{
2 One(String str){
3 System.out.println(str);}}
4
5
6 class Two{
7 One one1=new One("one-1");
8 One one2=new One("one-2");
9 One one3=new One("one-3");
10 Two(String str){
11 System.out.println(str);}}
12
13 public class test{
14 public static void main(String[] srgs){
15 Two two=new Two("two");}}
1 class Person{
2 private String name="unknown";
3 private int age=1;
4 public Person(){
5 System.out.println("constructor1 is calling");}
6 public Person(String s){
7 name=s;
8 System.out.println("constructor2 is calling");
9 System.out.println("name is"+name);}
10 public Person(String s,int i){
11 name=s;
12 age=i;
13 System.out.println("constructor3 is calling");
14 System.out.println("name&age is"+name+age);}
15 public void shout(){
16 System.out.println("Please see above!");}
17 }
18
19 class TestPerson{
20 public static void main(String[] args){
21 Person p1=new Person();
22 p1.shout();
23 Person p2=new Person("Jack");
24 p2.shout();
25 Person p3=new Person("Tom",9);
26 p3.shout();}}