以相同类型的一个对象初始化另一个对象

classC代码:

package jichu;

public class ClassC {
    private int s1;
    private int s2;

    public ClassC(int s1, int s2) {
        this.s1 = s1;
        this.s2 = s2;
    }

    public ClassC(ClassC c) {
        this.s1 = c.s1;
        this.s2 = c.s2;
        c.s1++;
        c.s2++;
    }

    public String toString() {
        return "s1:" + s1 + ";s2:" + s2;
    }
}

调用:

package jichu;

public class MainClass {
    public static void main(String[] args) {
        ClassC c1 = new ClassC(1, 2);
        ClassC c2 = new ClassC(c1);
        System.out.println(c1);
        System.out.println(c2);
    }
}

打印:

s1:2;s2:3
s1:1;s2:2

以相同类型的一个对象初始化另一个对象时,因为在类中,所以可以直接访问私有的成员变量。

    public ClassC(ClassC c) {
        this.s1 = c.s1;
        this.s2 = c.s2;
        c.s1++;
        c.s2++;
    }
时间: 2024-08-09 02:18:16

以相同类型的一个对象初始化另一个对象的相关文章

理解隐式类型、对象初始化程序和匿名类型

在C# 3.0中,几乎每个新特性都是为LINQ服务的.所以,本文将介绍下面几个在C# 3.0中引入的新特性: 自动实现的属性 隐式类型的局部变量 对象和集合初始化程序 隐式类型的数组 匿名类型 其实这几个特性都是比较容易理解的,对于这几个特性,编译器帮我们做了更多的事情(想想匿名方法和迭代器块),从而简化我们的代码. 自动实现的属性 在C# 3.0以前,当我们定义属性的时候,一般使用下面的代码 public class Book { private int _id; private string

运行时中给一个对象绑定另外一个对象

运行时中给一个对象绑定另外一个对象 category中,如果想要添加一个属性,通常的做法是不可能的.我们都知道,category只能增加方法,不能增加属性. 但在运行时中我们可以动态的绑定一个对象. 有以下两个方法来绑定以及获取绑定的对象: objc_setAssociatedObject Sets an associated value for a given object using a given key and association policy. 给一个指定的对象关联上一个值以及设置

Aggregate类型以及值初始化

引言 在C++中,POD是一个极其重要的概念.要理解POD类型,我们首先需要理解Aggregate类型.下文根据stackoverflow上的回答将对Aggregate类型做一个全面的解读. 对于Aggragates的定义 C++标准(C++ 03 8.5.1 §1)中的正式定义如下: An aggregate is an array or a class (clause 9) with no user-declared constructors (12.1), no private or pr

返回值为record类型的函 初始化 内存泄漏

1.函数需要初始化,否则下次调用函数时,Result还是上次的值,可能会引起误判.但是不会有内存泄漏,即使包含string类型的成员. 2.如果record包含的都是值类型的成员,比如integer,可以用ZeroMemory或者FillChar,函数多次调用时也不会内存泄漏. 如果,包含string类型的成员,不能用ZeroMemory或者FillChar,否则函数多次调用时会内存泄漏. 3. procedure ResetRecord(out aRecord; Size: Integer);

元素类型与样式初始化

一. 样式初始化 为什么要样式初始化 清除浏览器默认样式,以免造成不必要的兼容问题 通配符的弊端 *{ margin:0;padding:0; } 需要逐个清除默认样式 body,p,ul,ol,dl,dt,dd,h1,h2,h3,h4,h5,h6{margin:0;padding:0;} ul,ol{list-style:none;} img{border:0px;}/*清除ie图片边框*/ a{text-decoration:none;color:#222;} 二. 标签的分类 1. 块级元

个人学习C++过程中对const的总结:初始化系列之用字面值常量与其他类型的值初始化的区别(一)

const这个系列博大精深,在学习过程一点一点积累记录.但是由于随笔在发布之后不能修改,有了新的想法之后不能再在原随笔上修改,只好用一个个系列来慢慢积累. 哈哈,在发布之后发现是可以继续编辑的,好吧,不管了,这种方式挺好. 正文: 昨晚接触到一个算法题目,回文字符串,在网上找了某段代码,但是发现有点问题,原形大概如下: .... const int len=mystr.size(); //mystr是string的一个实例,其实我挺奇怪这里为什么用int而不是string::size_type或

返回值为 Record类型的函数 初始化 Result

function TMiTeC_Storage.GetPhysInfo(Index: integer): TDeviceInfo; begin Finalize(Result); FillChar(Result,SizeOf(TDeviceInfo),0); if (Index>=0) and (Index<Length(FPHYS)) then Result:=FPHYS[Index]; end; MiTeC控件的写法

C++基础3 类:构造 拷贝 析构函数,

为什么会出现构造函数 与 析构函数 [email protected]:~/c++$ cat main.cpp  #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; class Test { public: void init() { a = 1; b = 2; } private: int a; int b; }; int main() { Test arr[

复数类

实现复数类的基本成员函数,复数之间比较大小以及复数的四则运算. 设z1 = a + bi,z2 = c + di(a.b.c.d∈R)是任意两个复数, 复数乘法: (a + bi)(c + di) = (ac - bd) + (bc + ad)i. 复数除法: (a + bi) / (c + di) = (ac + bd) / (c ^ 2 + d ^ 2) + (bc - ad) / (c ^ 2 + d ^ 2)i. 代码如下: #define _CRT_SECURE_NO_WARNINGS