每日一学(8)——(面向对象)构造方法

构造方法相关知识点:

一、构造方法的格式:

修饰符构造方法名(参数列表){}

二、构造方法的体现:

1、每个类都有构造方法,构造方法不写也有,系统会自动添加,手写编译了就不会自动添加了

2、构造方法在new的时候自动执行

3、构造方法没有返回值类型。也不需要写返回值

4、构造方法名称必须和类型保持一致。

三、构造方法的细节:

1、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的

2、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。

可以用两种方式调用构造方法:

private int age;            

    private String name;

public Person() {  //无参的构造方法

    }

public Person(String name,int age) {  //有参的构造方法

    this. name=name;

    this. age=age;

   ...//此处省略set和get方法

}

 1、调用无参的构造方法

Person  p1=new  Person();

p1.setAge(18);

p1.setNAME("张三");

  2、调用有参的构造方法
Person  p2= new  Person("张三",18);

四、构造方法和一般方法的区别:

构造方法在对象创建时就执行了,而且只执行一次。

一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。

五、this关键字调用构造方法:(空参的构造方法name和age 赋值)

构造方法调用格式:this(参数列表);(必须放在构造方法的第一行)

成员变量和局部变量同名问题:可以在成员变量名前面加上this.来区别成员变量和局部变量

例如:

   private int age;            

    private String name;

public Person() {  //无参的构造方法

  this ("李四",20); //调用有参的构造方法         

    }

public Person(String name,int age) {  //有参的构造方法

    this. name=name;

    this. age=age;

test测试类中:

Person  p1=new  Person();//就会输出李四和20

六、super关键字

(1)子父类构造方法的调用

格式:

调用本类中的构造方法:this(实参列表);

调用父类中的空参数构造方法:super();

调用父类中的有参数构造方法:super(实参列表);

注意点:

1、如果两个类是继承关系,子类中的构造方法需要访问父类中的构造方法,同时,子类的构造方法的第一行有一句隐式的super()

      原因:子类继承父类中的内容,在子类初始化时,必须先到父类中去执行父类的初始化动作,这样可使用父类中的内容,当当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。

2、this()或者super()只能定义在构造方法的第一行两者二选其一只要是构造方法默认第一行都是super()。

3、如果父类有多个构造方法,子类任意调用一个就可以。

4、构造方法不能继承也不能重写,super()也必须在构造方法第一行
小结论:无论如何,子类的所有构造方法直接或者间接调用到父类的构造方法,子类的构造方法什么都不写,默认的构造方法第一行是 super()。

猜你喜欢

转载自blog.csdn.net/weixin_42517286/article/details/80860684