0520 构造方法 this super

构造方法

   在创建的同时,明确属性值(在出生时,new 和姓名同时创建)

格式:   注意:构造方法名 就是 类名

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

标识符:

 体现:

  构造没有返回值类型,它是构建对象,创建完对象,方法结束

构造名称必须是类名一致

构造方法的注意事项:
  如果我们没有给出构造方法,系统将自动提供一个无参构造方法
  如果给出构造方法,系统不再提供默认的无参构造方法

给成员变量赋值 2个方法

 setXxx()方法-:单纯修改属性值

构造方法:给对象中属性进行初始化,若修改初始化值则相当于重新new了一个对象而将原对象变成了垃圾

 

构造方法调用 

1
package com.oracle.day01; 2 public class Person { 3 private String name; 4 private int age; 5 //写构造方法 构造方法必须是类名 6 public Person(String name,int age){ 7 //System.out.println("Person构造方法"); 8 this.name=name;//this 可以解决成员变量和局部变量同名 this代表本类 9 this.age=age; 10 } 11 //手动补一个空参构造 12 public Person(){ 13 } 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 public int getAge() { 21 return age; 22 } 23 public void setAge(int age) { 24 this.age = age; 25 } 26 } 27 -------------------------------------------------------------- 28 package com.oracle.day01; 29 //测试 30 //注意问题: 31 /*1.当没有写构造方法时,编译器会自动给你添加空参构造 public Person(){} 32 2.当你自己写了一个构造方式时,编译器就不会给你添加。*/ 33 public class Demo { 34 public static void main(String[] args) { 35 //构造方法被调用:在第一次new的时候调用,一个方法创建时只能调用一次 36 Person p=new Person("钢铁侠",17); 37 //用set方法改名 38 p.setName("小辣椒"); 39 //打印 40 System.out.println(p.getAge()+"..."+p.getName()); 41 } 42 }

 构造方法 内存图

 This 关键字

package com.oracle.day02;
public class Person {
    private String name;
    private int age;
    //定义个空参构造
    public Person(){
    //构造之间调用    用this调用下面的 name,age.this只能在构造方法完成一次调用
        this("张三",28);
    }
    //写一个构造
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
-------------------------------------------------------------
package com.oracle.day02;
//测试
public class Demo {
    public static void main(String[] args) {
        Person p=new Person();
        System.out.println(p.getName()+"..."+p.getAge());
    }
}

内存图

 

this 两个作用

1.区别成员变量 局部变量   2.本类中调用 构造其他方法,且别虚放在构造方法第一行,因为初识话最先执行

super 关键字

在子类中调用父类构造方法

所有构造方法,第一行有条默认的 super();
只要构造方法直接或间接调用super(),就可以完成初始化

package com.oracle.day02;

public class Fu {
    private String name;
    private Fu(){        
    }
    public Fu(String name){
        this.name=name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
----------------------------------------------------------
package com.oracle.day02;
//继承父类
public class Zi extends Fu{
    public Zi(){
        //super();//所有的构造方法,第一行有条默认语句 super();
        //调用Fu类有参的构造方法
        //只要构造方法直接或间接调用super(),就可以完成初始化 super("小红帽"); } } ---------------------------------------------------------- package com.oracle.day02; //测试 public class Demo01 { public static void main(String[] args) { Zi zi=new Zi(); System.out.println(zi.getName()); } }

 

posted @ 2019-05-20 10:47  zhansen521  阅读(161)  评论(0编辑  收藏  举报