开发者社区> 山月风成> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

重温面向对象的思想——构造器和重载

简介: 1.this关键字 this表示这个对象的参考名称;例如this.age1=age2;表示将age2的值,赋值给这个对象的私有属性age1. 2. .重温面向对象的思想——构造器和重载 构造器:创建一个对象时,有时候需要对在实例化一个对象时,对这个对象进行初始化,这个时候我们就需要构造方法来进行这种初始化。
+关注继续查看

1.this关键字

  • this表示这个对象的参考名称;例如this.age1=age2;表示将age2的值,赋值给这个对象的私有属性age1.

2. .重温面向对象的思想——构造器和重载

  • 构造器:创建一个对象时,有时候需要对在实例化一个对象时,对这个对象进行初始化,这个时候我们就需要构造方法来进行这种初始化。
  • 重载:当这种初始化需要按照不同的语境,不同的参数的构造器来进行初始化。
  • 总结——方法的重载是多种构造器,用以完成不同的初始化。

    -注意:构造器==构造方法,两者一样


3.构造方法和自定义方法名注意事项

需要注意的是,自定义的方法和构造器的名字一样时,编译是能够通过的,但是不符合编程规范,例如

package demo;

public class Store {

    private String goodsClass;
    private double price;

    // 这个是第一个构造方法
    public Store() {
        this.goodsClass = "今天商店关门了";
        System.out.println(this.goodsClass);
    }

    // 这个是第二个构造方法,改变A商品的价格,前两者就叫做重载
    public Store(String goodsClass, double price) {
        this.goodsClass = goodsClass;
        this.price = 2.0 * price;
    }

    // 这个是自定义的方法,不是构造器
    // 虽然自定义的方法和构造器重名了,但编译能够通过,编程规范不建议这样写
    public void Store() {
        System.out.println("第二个Store" + this.goodsClass + this.price + "元");
    }

    public static void main(String[] args) {
        Store st1 = new Store("香蕉", 3);// 构造方法构造反法1
        st1.Store();// 对象的自定义Store方法
        Store st2 = new Store();// 构造方法2
    }
}
结果:
第二个Store香蕉6.0元
今天商店关门了

4. 构造方法之间的引用

  • 在一个构造方法中引用另一个构造方法的条件——当A构造方法中的过程,在B构造方法中能够被复用。例如
package demo;

public class ThisDemo {
    private int number;
    private String text;

    public ThisDemo(int number) {
        if (number < 0) {
            System.out.println("你输入的数字小于零,不能用");
        } else {
            this.number = number;
            System.out.println("你输入的数字是" + this.number);
        }
    }

    public ThisDemo(int number, String text) {
        //调用另一个构造方法来判断
        this(number);
        this.text = text;
        System.out.println("使用this()来调用另一个构造方法");
        // 具体调用哪一个构造器示传入的参数的个数,类型决定
    }

    //测试
    public static void main(String[] args) {
        ThisDemo demo = new ThisDemo(10, "This关键字");
    }
}
结果:
你输入的数字是10
使用this()来调用另一个构造方法

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )(二)
【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )(二)
54 0
面向对象——多态与重载
面向对象——多态与重载
69 0
跳出面向对象思想(三) 封装
原文 简述 我认为"封装"的概念在面向对象思想中是最基础的概念,它实质上是通过将相关的一堆函数和一堆对象放在一起,对外有函数作为操作通道,对内则以变量作为操作原料。
865 0
【逻辑思考】除夕博思
年30晚上春晚开始之前,本想写点什么,但是由于窗外炮竹响个不停(由于住的是一楼,楼与楼之间的空隔特别小,鞭炮就在窗下响,离的太近),所以根本没办法整理思路,想到这首诗。 我本将心写博客, 奈何炮竹响不停。
1451 0
面向对象程序设计上机练习一(函数重载)
面向对象程序设计上机练习一(函数重载) Time Limit: 1000MS Memory Limit: 65536KB Problem Description 利用数组和函数重载求5个数最大值(分别考虑整数、单精度、长整数的情况)。
1054 0
【面向对象设计基础】常量数据管理器
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ a)使用场景:在程序设计中,我们可以把所用要用到的常量设计为一个独立的类,使得对常量的管理有效清晰。
592 0
C++类对象的拷贝构造函数分析
 对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100;int b=a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。
833 0
+关注
山月风成
君子不以辞尽人,故天下有道,则行有枝叶;天下无道,则辞有枝叶。热爱技术岗位,因为这里单纯友好,自由和分享。
37
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载