精华内容
下载资源
问答
  • 1、在c++中,当把一个类对象作为另...2、如果一个类A的对象作为另一个类B的数据成员,则在B的对象创建过程中,调用其构造函数的过程中,数据成员(A的对象)会自动调用A的构造函数。     但是应注...

     

    1、在c++中,当把一个类的对象作为另一个新类的数据成员时,定义格式为:

    class  X

     

     

    {

       类名1  成员名1;

     

     

       类名2  成员名2;

       其他成员;

     

     

    }

    2、如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。

     

     

    但是应注意:

    (1)初始化列表的方式调用构造函数

          如果类A的构造函数为有参数时,则在程序中必须在类B的构造函数的括号后面加“”,和被调用的类A的构造函数,且调   用类A的构造函数时的实参值必须来自类B的形参表中的形参,

    例如对上面类X进行初始化时必须首先初始化其中的子对象,即必须首先调用这些子对象的构造函数,因此,类X的构造函数应定义为X::X(参数表0)成员1(参数表1),成员2(参数表2),成员n(参数表n){}

    其中参数表1 提供初始化成员1所需的参数,参数表2提供初始化成员2所需的参数,以此类推,并且这几个参数表中的参数都是由参数表0提供的,另外,初始化X的其他成员所需要的数据也是由参数表0提供的。

     

     

    (2)在构造新类的对象过程中,系统首先调用其子对象的构造函数去初始化子对象,然后才执行类X的自己的构造函数,初始化类中的非对象成员。对于同一类中的不同子对象,系统按照他们在类中的说明顺序调用相应的构造函数进行初始化,而不是按照初始化表的顺序进行初始化。

     

     

    展开全文
  • 对Java的面向对象进行浅谈


    前言(先扯几句家常)

    个人主张自学,但是也不能忘记了讨论的重要性,但是由于平时不z怎么看CSDN,所以呢我这边搞了一个小圈子,欢迎大家来哦~可以畅所欲言呀——java小圈子

    不过CSDN评论区我也会不定时观看的,所以非强制性要求哦


    首先声明,本人并不是什么大佬,也是一个初入IT界的小白,我们一起加油学习

    展开全文
  •  一个类中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个类的一个对象。用子对象创建新。    在C++中,当把一个类的对象作为新的数据员时,则新的定义格式可表示为:   ...
      一个类的对象作为另一个类的数据成员。
    
     
         一个类中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个类的一个对象。用子对象创建新类。
     
         在C++中,当把一个类的对象作为新类的数据员时,则新类的定义格式可表示为:
     
    class X
     
    { 类名1  成员名1;
     
      类名2  成员名2;
     
      ……
     
      类名n  成员名n;
     
      ……//其它成员
     
    };
     
    (3)如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。
     
    但应注意:如果类A的构造函数为有参函数时,则在程序中必须在类B的构造函数的括号后面加一“:”和被调用的类A的构造函数,且调用类A的构造函数时的实参值必须来自类B的形参表中的形参。这种方法称为初始化表的方式调用构造函数。如:以上面定义的类X为例,在对类X的对象进行初始化时,必须首先初始化其中的子对象,即必须首先调用这些子对象的构造函数。因此,类X的构造函数的定义格式应为:
     
    X::X(参数表0):成员1(参数表1),成员2(参数表2),…,成员n(参数表n)
     
    { ……}
     
    其中,参数表1提供初始化成员1所需的参数,参数表2提供初始化成员2所需的参数,依此类推。并且这几个参数表的中的参数均来自参数表0,另外,初始化X的非对象成员所需的参数,也由参数表0提供。
     
    在构造新类的对象过程中,系统首先调用其子对象的构造函数,初始化子对象;然后才执行类X自己的构造函数,初始化类中的非对象成员。对于同一类中的不同子对象,系统按照它们在类中的说明顺序调用相应的构造函数进行初始化,而不是按照初始化表的顺序。












    以下定义了三个Student、Teacher和Tourpair,其中Student类的对象和Teacher类的对象作为了Tourpair的数据成员,观察对象的构造过程和构造函数被执行的顺序。
     
    #include <iostream.h>
     
    class Student
     
    { public: 


       Student()
     
        { cout<<”construct student.\n”;
     
           semeshours=100;
     
           gpa=3.5;   }   


    protected:
     
         int semeshours;
     
         float gpa;
     
    };
     
    class Teacher
     
    { public:
     
         Teacher()
     
       { cout<<”construct Teacher.\n”; 


        }
     
     };
     
    class Tourpair
     
    {public:
     
         Tourpair()
     
         {cout<<”construct tourpair.\n”;
     
          nomeeting=0;  }
     
      protected:
     
          Student student;
     
          Teacher teacher;
     
          int nomeeting;
     
     };
     
    void main()
     
    {Tourpair tp;
     
    cout<<”back in main.\n”; }
     
    其执行结果是:
     
       construct student.
     
       construct teacher.
     
       construct tourpair.
     
       back in main.
     
          由此可见:主函数main()运行开始时,遇到要创建Tourpair类的对象,于是调用其构造函数Tourpair(),该构造启动时,首先分配对象空间(包含一个Student对
     
    象、一个Teacher对象和一个int型数据),然后根据其在类中声明的对象成员的次序依次调用其构造函数。即先调用Student()构造函数,后调用Teacher()构造函数,最后才执行它自己的构造函数的函数体。
     
         由于上例中Tourpair类的数据成员student和teacher的构造函数都是无参函数,所以系统在构造student和teacher对象时会自动调用各自的构造函数Student()和Teacher(),而不需要用初始化表的方式去调用。
     
    【例3-7】试分析以下程序的执行结果:
     
    #include <iostream.h>
     
    #include <string.h>
     
    class Student
     
    { public:
     
       Student(char *pName="No name")
     
          { cout<<"构造新同学:"<<pName<<endl;
     
             strncpy(name,pName,sizeof(name)); char * strncpy(char *dest, char *src, size_t n); 将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。              C语言中判断数据类型长度符
     
             name[sizeof(name)-1]='\0';  


            }
     
     Student(Student &s)
     
          { cout<<"构造copy of "<<s.name<<endl;
     
             strcpy(name, " copy of ");  extern char *strcpy(char *dest,char *src);    把src所指由NULL结束的字符串复制到dest所指的数组中
     
             strcat(name,s.name);    extern char *strcat(char *dest,char *src);          把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
     
             }
     
    ~Student()
     
     { cout<<"析构 "<<name<<endl; }
     
        protected:
     
        char name[40];  };
     
    class Tutor
     
    { public: 


           Tutor(Student &s):student(s)//此为初始化表,调用
     
                                                         //Student的拷贝构造函数
     
           { cout<<"构造指导教师 \n";  }
     
       protected:
     
            Student student;
     
     };
     
    void main()
     
    {  Student st1;   //此处调用Student的构造函数Student(char  


               *pName="No name")
     
       Student st2("zhang"); //同上
     
       Tutor tutor(st2); //此处调用Tutor的构造函数Tutor(Student &s)
     
       //在构造tutor对象的过程中,用初始化表调用
     
       //Student类的拷贝构造函数Student(Student &s)
     
    }
     
    执行结果如下:
     
    构造新同学:No name
     
    构造新同学:zhang
     
    构造copy of zhang
     
    构造指导教师
     
    析构  copy of zhang
     
    析构 zhang
     
    析构 No name
     
    3.2.7 利用初始化表对常量数据成员或引用成员提供初值
     
         如前所述,构造函数可对对象的数据成员进行初始化,但若数据成员为常量成员或引用成员时,就有所不同,如:
     
    class Sillyclass
     
    { public :
     
    Sillyclass()   // 此构造函数对成员ten和refi的初始化错误。
     
        { ten=10;
     
           refi=i; }
     
    protected:
     
        const int ten;   //常量数据成员ten
     
        int &refi;         //引用refi
     
    };
     
    说明:
     
    1. 造成以上错误的原因是在Sillyclass类的构造函数进入之后(开始执行其函数体时),对象结构已经建立,数据成员ten和refi已存在,而其数据成员ten为const,而refi为引用,所以在构造函数体内不能再对其指派新的值。
     
    2. 解决以上问题的方法是利用初始化表:在构造函数的括号后面加一“:”和初始化表,初始化表的格式是:
     
    数据成员名(值),如果有多个时,需要用逗号隔开。
     
    【例3-8】 类employee中包括私有数据成员x, 和2个公有函数成员example、show。程序中使用初始化表是x(215)。
     
    # include <windows.h>
     
    # include <iostream.h>
     
    // 定义类 employee
     
    class  employee
     
    {private:
     
         const int x;
     
      public:
     
         employee ();
     
         void show(); 


     };
     
    // employee的类外定义
     
    employee :: employee () : x (215)   // 初始化表
     
    {                   }
     
    // show()的定义。
     
    void employee :: show()
     
    {  cout << "\n    x的值是:"<< x << endl; }
     
    // 主函数
     
    void main()
     
    {   //生成对象并为x赋予初始值
     
       employee obj;
     
         //调用show显示x的值
     
       obj.show();
     
    }
    展开全文
  • Java中获取类对象种方式

    千次阅读 2018-10-13 10:45:25
    Java中获取类对象种方式 1.通过Class的forName()方法获取,括号中的内容是的全名; Class class=Class.forName("com.day03.Student"); 2.通过类名.class获取; Class class=Student.class; 3....

    Java中获取类对象的几种方式

    1.通过Class类的forName()方法获取,括号中的内容是类的全名;

    Class class=Class.forName("com.day03.Student");
    

    2.通过类名.class获取;

    Class class=Student.class;
    

    3.通过具体对象获取;

    Student student=new Student();
    Class class=student.getClass();
    
    展开全文
  • C++编程语言中类对象的赋值与复制介绍(

    万次阅读 多人点赞 2018-08-20 17:17:07
    如同基本类型的赋值语句一样,同一个类的各个对象之间也是可以进行赋值操作的,即将一个对象的值赋给另一个对象。 需要说明的是,在对象的赋值过程中,只会对中的数据成员进行赋值,而不对成员函数赋值。 例如...
  • 原理是数组的slice()方法可以从已数组中返回一个新数组,它可以接受两个参数arr.slice(start,end),第一个参数规定从何处开始选取,第二个参数表示从何处选取结束,如果不传参将返回原数组的一个副本,但该方法不会...
  • 一个class都有一个Class对象一个java文件经过编译,再生成的.class文件中,就会创建一个Class对象。只有一个。他表示整个的类型信息。 那么通常我们创建对象的方式又有几种呢? 五种: 1.通过new 语句创建...
  • 面向对象--之间的种关系

    千次阅读 2015-01-16 13:33:42
    一、继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML...
  • 在面向对象的编程语言中,一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。 什么是对象 对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一...
  • Object 类对象转成自定义类对象

    万次阅读 2018-02-01 12:17:50
    工作中遇到这样的问题,某个对象的中的某个字段,设计不合理...sql从表中查出条记录,有时关联了几个表,这时得到的对象一般是Object类型: List ckReinvestAList = this.getService().find(" from FemReinvestATa
  • Java 对象和方法

    万次阅读 2019-10-13 15:57:34
    Java 对象和方法(的基础知识如何创建对象引用变量和赋值方法 的基础知识 是定义对象形式的模板,指定了数据以及操作数据的代码。 Java中使用的规范来构造对象,而对象的实例。 是逻辑抽象的...
  • String s=new String(“abc“) 创建了几个对象(详解)

    万次阅读 多人点赞 2019-01-10 15:43:11
    String s , 这个语句声明一个类String的引用变量 s [我们常常称之为句柄],而对象一般通过new创建。所以题目中s仅仅是一个引用变量,它不是对象。 new String(), 这里是通过new创建了一个String对象,放在heap(堆)...
  • 一个是“sdd”对象,abc在一个字符串池中s这个对象指向这个串池 这个题的考点知识很多: 引用变量与对象的区别; 字符串文字"abc"是一个String对象; 文字池(pool of literal strings)和堆(heap)中的字符串对象...
  • 一个类可以继承自一个普通,继承它的成员变量和方法;也可同时继承自 一个接口,继承接口的方法并完成定义。有一个神奇的魔法:同一种对象,都是IAct对象,调用同一种方法Act() 。但是执行的情况却完全不一样。...
  • java中String到底创建了几个对象

    万次阅读 2010-08-05 13:03:00
    1.String a = new String("1"+"2")共建了几个对象 我相信,绝对是个经典兼考倒堆人的题目。经典,Java的面、笔试上都会,可又总是人会犯晕。呵呵! 看构造器里面("1"+"2"),这个是在编译期就...
  • vb中的对象

    万次阅读 热门讨论 2014-08-27 11:52:02
    vb的对象。vb,一个不是完全面向对象的编程语言,相对于其它高级编程语言来说,在它上面,基于对象的编程...对于对象,只不过是的实例化罢了,而,是众多对象的抽象的一个庞大集合。实例化对象对象抽象成
  • 要理解这个,就要知道string的工作原理。 你知道在java中除了8中...所以"xyz"在java中它是一个String对象.对于string类对象来说他的对象值是不能修改的,也就是具有不变性。 看: String s="Hello"; s
  • 由于对C++的使用时断断续续的,所以今天拿起来看了,C++中一最大的特色就是的设计思想 基本后面的所有包括封装,多态,继承等都是基于的思想完成的。 对象的过程就是实例化的过程,我经常会看到两种...
  • String str = new String("abc")究竟创建了几个对象

    万次阅读 多人点赞 2018-10-27 11:25:54
    String是一个特殊的包装数据。即可以用String str = new String("abc");的形式来创建,也可以用String str = "abc";的形式来创建 String str = "abc"创建对象的过程   首先在...
  • 答案是 两个对象,要理解这个,就要知道string的工作原理。下面来慢慢分析一下: public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=...
  • String s=new String("abc")创建了几个对象? String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的...
  •  紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些...
  • 深入理解Java对象的创建过程:的初始化与实例化

    万次阅读 多人点赞 2017-05-18 14:17:45
    在Java中,一个对象可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用构造器完成的初始化。...
  • 我有一个自己作的class(LinkedStack),然后声明了两个对象LinkedStack temp = new LinkedStack();LinkedStack Path。 但是,当我用temp = Path;把path的值给了temp以后;我对temp进行一些删除,但是path里面的值...
  • String s=new String("abc") 创建了几个对象?

    万次阅读 热门讨论 2014-03-28 22:35:50
    1、 Sting s 定义了一个变量s,没有创建对象; 2、 = 赋值,将某个对象的引用(句柄)赋给s ,没有创建对象; 3、 “abc” 创建一个对象; 4、 new String() 创建一个对象。 首先,总结一下java创建对象的...
  • 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些...
  • Java:面试题:String s=new String("abc")创建了几个对象?

    万次阅读 多人点赞 2018-10-02 22:04:06
    紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA...
  • 【c++】返回类对象

    万次阅读 2018-06-17 23:47:06
    函数返回值是一个类对象时,以下种选择:1,返回对象的const引用;2,返回对象的引用;3,返回对象;4,返回const对象1,返回对象的const引用,举例:#include &lt;iostream&gt; #include &lt;cmath...
  • C++的存储及类对象内存结构

    万次阅读 多人点赞 2016-07-22 16:06:12
    c++中最重要的就是,那么一个类对象,它在内存中如何存储的?它占 内存中多少个字节? 首先确定的构成: 1,数据成员:可以是内置类型,类型。 2,函数成员:虚函数,非虚函数 1)数据成员 内置类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,729,972
精华内容 691,988
关键字:

一个类可以有几个对象