zoukankan      html  css  js  c++  java
  • 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()); } }
  • 相关阅读:
    Redis详解(三)- redis的六大数据类型详细用法
    Redis详解(二)- redis的配置文件介绍
    《OR Talk NO.11 | 清能互联赖晓文:电力系统中的运筹优化应用》
    《OR Talk NO.10 | 浙江大学徐金明:分布式优化算法何时能在性能上与集中式算法相媲美?》
    《OR Talk NO.9 | 深圳大学龚元浩:比几何流快一万倍的曲率滤波算法》
    《OR Talk NO.4 | Attain.ai 创始人李玉喜:强化学习遇见组合优化》
    《OR Talk NO.3 | 滴滴 AI Labs 秦志伟:深度强化学习在网约che交易市场中的应用》
    《OR Talk NO.2 | 胡武华博士:运筹优化理论在物流行业中的应用实践》
    《KDD 2018 | Conventional Tutorials》
    《OR Talk NO.13 | MIT 博士与你分享电商供应链算法实战心得》
  • 原文地址:https://www.cnblogs.com/zs0322/p/10892841.html
Copyright © 2011-2022 走看看