精华内容
下载资源
问答
  • 类对象是将具有相似属性方法的对象总结抽象为类对象,可以定义相似的一些属性方法,不同的实例对象去引用类对象的属性方法,能减少代码的重复率。 实例对象又称实例化对象,不是抽象而是一类对象中具体的一例...

    Y14


    一、类对象和实例对象
    简短理论:

    1. 类对象是将具有相似属性和方法的对象总结抽象为类对象,可以定义相似的一些属性和方法,不同的实例对象去引用类对象的属性和方法,能减少代码的重复率。
    2. 实例对象又称实例化对象,不是抽象而是一类对象中具体的一例对象。

    比喻理解:
      我相信有的人觉得有点绕,在这里我以比喻说明,希望你能明白。首先,要明白,在python中,“万物皆对象”。个人理解:

      类对象,好比有一篮“水果”,篮子里面的水果没有重复,那么这一篮中的“水果”就属于一个类,是抽象的,就像有人对你说“给我水果”,你的第一反应一定是“什么水果?”,所以是不确定性的。

      实例对象,好比篮子里面的“苹果”,是一个具体的对象,即一个实例。我想有人对你说“给我苹果”,你应该不会想选择哪个水果吧


    二、类变量和实例变量
    简短理论:

    1. 类变量:可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。
    2. 实例变量:实例化之后,每个实例单独拥有的变量。实例变量:实例化之后,每个实例单独拥有的变量。

    比喻理解:
      其实,如果你理解了类对象和实例对象,在看过类变量和实例变量的理论,应该就能明白区别。

      类变量,接上面一篮水果比喻,好比是说“洗洗水果”(洗这个新加的动作就是你定义的一个类变量),你肯定是篮子里面的所有水果都会洗。也就是所有的水果都共享了“洗”这个新加的动作。即“类变量的值,实例可以共享”

      实例变量,这个简单,好比说“洗洗苹果”,这个洗的动作是有针对性的,是作用于一个苹果(实例)。即为“实例化后,每个实例单独拥有的变量”


    大家需要注意,以上问题也是python中常见面试题,若需代码理解,推荐:https://www.cnblogs.com/loleina/p/5409084.html ,愿你理解。

    个人小结,定有不足之处,欢迎指点。
    谢谢~

    展开全文
  • 类对象和类的对象区别

    千次阅读 2018-10-14 16:15:02
    类对象应该指类的Class对象,也就是字节码对象可以通过Class.forName()/getclass()/.class来获取,当jvm加载一个类时就会为这个类创建一个Class对象; 1.类型.class; String.class  2.对象.getClass(); "...

    类对象应该指类的Class对象,也就是字节码对象可以通过Class.forName()/getclass()/.class来获取,当jvm加载一个类时就会为这个类创建一个Class对象;

    1.类型.class;    String.class

     2.对象.getClass();    "hello".getClass()

    3.Class.forName();   Class.forname("java.lang.String")


    类的对象,通常就是指我们通过new这个类或者反射得到Class对象再调用newInstance()创建的对象,存在内存的堆中,也叫类的实例;

     

    通过反射创建对象:方法一:通过类对象调用newInstance()方法;  String.class.newInstance();

    方法二:通过类对象的getConstructor()或getDeclaredConstructor()方法获得构造器(Constructor)对象并调用其newInstance()方法创建对象。如:String.class.getConstructor(String.class).newInstance("hello")

    展开全文
  • 类对象和类的对象的区别

    千次阅读 2017-02-07 11:24:04
    在学习equals类的时候,接触到了类的对象和类对象的概念。 首先,使用eclipse重写equals的时候,会有有这么一段代码if (getClass() != obj.getClass()) return false;这里的obj.getClass就是只获取obj类对象, ...

    在学习equals类的时候,接触到了类的对象和类对象的概念。
    首先,使用eclipse重写equals的时候,会有有这么一段代码

    if (getClass() != obj.getClass())
                return false;

    这里的obj.getClass就是只获取obj类对象,
    我们平时所说的类的对象实际上是指类里面的那些属性的值啊等等的一些具体的数据
    而类对象是指那些类的代码信息,比如类里的属性的作用域,类型等等,方法的作用域,返回值等等
    举个例子,类里有一个属性是private String man;
    而后来给man了一个值"Tom"
    此时,我们可以称Tom是类的对象,man是类对象。

    展开全文
  • POJO对象和Java类对象区别和联系是什么 POJO对象和Java类对象区别和联系是什么
  • C++类对象和类指针的区别

    万次阅读 多人点赞 2019-04-17 20:57:28
    一篇转载率较高的帖子:C++ 类对象和 指针的区别 大佬都不贴结果。。。。所以这里我给出代码结果: #include<iostream> using namespace std; class Test{ public: int a; Test(){ a = 1; } }; ...

    好奇这个,所以参考了一些帖子,写下心得。


    一篇转载率较高的帖子:C++ 类对象和 指针的区别

    大佬都不贴结果。。。。所以这里我给出代码和结果:

    #include<iostream>
    using namespace std;
    
    class Test{
    public:
        int a;
        Test(){
            a = 1;
        }
    };
     
    int main()
    {
        Test* t1 = new Test();
        t1->a = 10;
        
        Test* t2 = new Test();
        t2->a = 5;
        
        cout << "&t1:" << t1 << " a = " << t1->a << endl;
        cout << "&t2:" << t2 <<  " a = " << t2->a <<endl;
        
        cout << "------------------------------" << endl;
        t2 = t1;
        cout << "&t1:" << t1 << " a = " << t1->a << endl;
        cout << "&t2:" << t2 <<  " a = " << t2->a <<endl;
        
        cout << "------------------------------" << endl;
        
        t1->a = 111;
        t2->a = 222;
        cout << "&t1:" << t1 << " a = " << t1->a << endl;
        cout << "&t2:" << t2 <<  " a = " << t2->a <<endl;
        
        return 0;
    }
    

    结果:

    说明类指针和变量指针一样,指针赋值以后改动的就是地址了

    #include <iostream>
    using namespace std;
    class Test{
    public:
        int a;
        Test(){
            a = 1;
        }
    };
    int main()
    {
        Test t1;
        t1.a = 10;
        
        Test t2;
        t2.a = 5;
        
        cout << "&t1:" << &t1 << " a = " << t1.a << endl;
        cout << "&t2:" << &t2 <<  " a = " << t2.a <<endl;
        
        cout << "------------------------------" << endl;
        t2 = t1;
        cout << "&t1:" << &t1 << " a = " << t1.a << endl;
        cout << "&t2:" << &t2 <<  " a = " << t2.a <<endl;
        
        cout << "------------------------------" << endl;
        
        t1.a = 111;
        t2.a = 222;
        cout << "&t1:" << &t1 << " a = " << t1.a << endl;
        cout << "&t2:" << &t2 <<  " a = " << t2.a <<endl;
        
        return 0;
    }
    

    说明类对象和c++中的普通变量一样,赋值就是对值进行改动,对地址没有改动


    类的指针:他是一个内存地址值,他指向内存中存放的类对象(包括一些成员变量所赋的值).   
    对象:他是利用类的构造函数在内存中分配一块内存(包括一些成员变量所赋的值).   

    指针变量是间接访问,但可实现多态(通过父类指针可调用子类对象),并且没有调用构造函数。 
    直接声明可直接访问,但不能实现多态,声明即调用了构造函数(已分配了内存)。 

    类的对象:用的是内存栈,是个局部的临时变量.   
    类的指针:用的是内存堆,是个永久变量,除非你释放它.  

     

    在应用时:   
            1.引用成员:   对象用"   .   "操作符;   指针用"   ->   "操作符.   
            2.生命期:     若是成员变量,则是类的析构函数来释放空间;若是函数中的临时变量,则作用域是该函数体内.而指针,则需利用delete   在相应的地方释放分配的内存块.   
            注意:用new   ,一定要delete.. 

    看来类指针也是需要delete的?

     

    C++的精髓之一就是多态性,只有指针或者引用可以达到多态对象不行
    类指针的优点: 
    第一实现多态。 
    第二,在函数调用,传指针参数。不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数传递占用的资源就太大了


    趁热打铁再来一个博客:解析C++普通局部变量与指针类型的对象变量的应用区别

    首先我们先来了解一下MFC中的CPtrArray类,他可以说是CObject类型指针对象的集合。通过int Add(CObject* newElement );注意参数是一个指针类型)可以向集合中添加元素。首先我们定义一个CPtrArray类型的对象。

    CPtrArray pArray;//他是一个全局对象

    先设定一个举例的类类型。如:

    class A
    {
    public:
        A(int i)
        {
            a = i;
        }
        ~A(){}
    public:
        int a;
    };

    现在我们需要在某个函数中要实现将一个A类型对象数据加入到一个CPtrArray对象中。此函数func1()如下:

    void func1()
    {
        //首先定义一个A类型的对象
        A a(1);
        //使用pArray对象中的成员函数将此对象加入到容器中
        pArray.Add(&a);
    }

    另一个函数中我们使用pArray容器为我们保存的数据:

    void func2()
    {
        //首先声明一个A类型的对象
        A* a;
        //使用pArray对象中的成员函数GetAt()将A类型的对象取出
        for(int i; i < pArray.GetSize();i++)
        {
            a = (A*)pArray.GetAt(i);
            //使用A中的数据进行相关的操作代码。***此时也可以使用delete释放指针指向的内存区块,防止内存泄露***当然是后面一种方法时才用到,暂时无视之。
            ...
        }
         
    }

    现在我们发现按照上面的过程,当我们在func2()函数中将要使用pArray容器对象为我们保存的数据时,我们并不能得到想要的数据!!!为什么发生以上情况?图解如下

    pArray保存a保存资源的地址;

    func1函数执行完成,a发生析构,资源不可用;

    原来在func1()函数中,a对象是一个局部对象,当我们使用pArray.Add(&a);我们将a对象的地址保存到pArray对象中。但是作为局部对象,当func1

    执行完成后,资源需要回收,此时我们定义的a对象也在A类中的析构函数中被析构释放资源!而当我们在fun2()函数中执行取出保存的对象时,

    实际是根据保存的地址去内存中找到数据,虽然此时我们能能够找到此地址,但是这个地址上面的数据并不是我们需要的了!!!所以才发生面的情况!

    那么怎么才能解决呢?

    看下面,我们只需更改func1函数中的代码:

    void func1()
    {
        //首先定义一个A类型的对象
        //A a(1);//为对比,只是注释原来那句
        A* a = new A(1);
        //使用pArray对象中的成员函数将此对象加入到容器中
        pArray.Add(a);
    }

    这样,我们就能够在func2函数中使用pArray对象中包含的数据了!那么为什么定义了一个指针类型的对象就能够完成了呢?还是一个局部对象呀,

    前面说的func1函数执行完成后此对象还是要经历析构的啊!图解如下:

    pArray中保存a指向资源的地址;

    func1函数执行完成,a对象发生析构,pArray根据地址还能能够访问到之前的资源;

    对,是要析构,但是,我们在pArray.Add(a);中加入的是a对象资源的地址,我们先看看A* a = new A(1);在堆中分配资源,我们知道,在堆中分配的资

    源是在跟程序的生命周期是一致的。a对象虽然析构了(不存在了),因为a也是一个指针,a指针也就是保存这个资源的地址!我们在pArray中保存的a的地址出的资源并没有析构!所以在func2函数中我们还能够使用此地址访问此地址对应的资源!

     

    --------------------------------END---------------------------

     

     

     

     

    展开全文
  • 类和对象区别

    万次阅读 2013-03-08 17:24:58
    笔试题之三:类和对象区别 对象的抽象,对象的具体实例。 是抽象的,不占用内存,而对象是具体的,占有内存空间。 例如:就是水果,对象就是苹果。 继承与多态 多态性指用一个名字定义不同的...
  • 数组对象和类数组对象区别

    千次阅读 2017-03-05 13:43:38
    数组对象:(看例子) var a = {}; var i =10; while(i  a[i] = i*i; i++; } 数组对象: var b = []; var i =0; while(i b[i] = i*i; i++; } 其实你从源代码上面去看也没有什么大的区别: 但是...
  •   在需要将一个继承链下把一个对象转换为另一个对象(注意:这里强调转换的是对象而不是),更确切地说其实应该是引用类型和对象类型不一致的时候考虑到对象类型转换 这里拓展一下引用和对象区别 对象...
  • synchronized 对象和类锁的区别

    千次阅读 2018-05-31 20:36:40
    synchronized 对象和类锁的区别 synchronized 描述 一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限, 在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候...
  • 起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new...所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高
  • 对象区别和联系

    千次阅读 2019-04-01 16:25:42
    是封装对象的属性行为的载体,在Java语言中对象的属性以成员变量的形式存在,而对象的方法以成员方法的形式存在。 对象:Java是面向对象的程序设计语言,对象是由抽象出来的,所有的问题都是通过对象来...
  • java对象区别

    千次阅读 2014-09-30 15:25:23
    类和对象区别
  • java中对象的指针有神马区别和联系 java中对象的指针有神马区别和联系
  • 透彻理解 Java synchronized 对象和类锁的区别

    万次阅读 多人点赞 2017-02-17 14:34:05
    synchronized 加到 static 方法...对象和类锁是不同的锁,所以多个线程同时执行这2个不同锁的方法时,是异步的。 在Task2 中定义三个方法 doLongTimeTaskAdoLongTimeTaskB是锁,而doLongTimeTaskC是对象锁。pub
  • 类和对象

    千次阅读 多人点赞 2019-05-15 21:49:28
    类和对象:是抽象概念,表示的是一个共性的产物,之中定义的是属性行为(方法),是创建对象的模板; 什么是对象? 万物皆对象对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,表示一个...
  • 类对象和类指针的区别

    千次阅读 2010-10-27 22:06:00
    对象和类的指针的区别zz <br /> 如下程序: <br />#include <iostream> #include <string> using namespace std; <br />class Student {  public:  ...
  • 怎么来理解java类和对象区别

    千次阅读 多人点赞 2018-05-08 11:29:19
    对象在需求中的使用在具体问题中如何使用面向对象去分析问题,如何使用面向对象。以把大象装冰箱为例进行分析:在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。需求:把大象装冰箱里对象:...
  • 类和对象的关系区别

    千次阅读 2019-03-05 21:11:59
    对象:对象是类的一个实例(有状态行为。) 类:类是一个模板,它描述一类对象的行为状态。 举例:
  • java类和对象的联系,区别

    千次阅读 2017-10-11 17:29:24
    1. 将具有相同属性及相同行为的一组对象称为...在 Java 程 序设计中,被认为是一种抽象数据类型,这种数据类型,不但包括数据,还包括方法。这大大地扩充了数据类型的概念。 是一个抽象的概念,要利用的方式
  • java 对象和类锁的区别

    千次阅读 2017-09-18 15:19:32
    1.一个可以有多个对象,所以一个可以有多个对象锁。 2.当一个中有多个synchronized修饰的同步方法时,其中一个方法被线程访问持有锁,其他方法同样被锁住,其他线程依然不能访问其他同步方法,因为此时锁住的...
  • Java类和对象 详解(一)

    万次阅读 多人点赞 2016-10-06 20:48:02
    一、面向对象简述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计...
  • 对象和类锁的区别

    千次阅读 2020-04-12 16:47:25
    对象和类锁的区别synchronized 关键字对象锁1、锁住 this 对象2、 锁住实体里的非静态变量3、直接锁非静态方法对象锁代码测试锁1、锁住 xxx.class2、锁住中的静态变量3、直接在静态方法上加 synchronized锁...
  • C++用new不用new创建类对象区别

    万次阅读 2014-08-13 12:10:55
    起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想...所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似
  • 方法和对象方法的区别

    千次阅读 2016-06-13 20:50:46
    方法和对象方法的区别 0. 对象方法以-开头 方法以+开头 1. 对象方法必须用对象调用 方法必须用来调用 2. 对象方法中可以直接访问属性(成员变量) 方法中不可以直接访问属性(成员变量) 3. ...
  • new一个类对象和使用类名创建一个对象有什么区别? 用new来给一个类的对象分配空间,使用类名称来定义一个类的对象,有什么区别?难道区别只是new的返回值是个指针,而对象定义得到的是变量名么?或者是在存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,236,273
精华内容 494,509
关键字:

类对象和类的对象的区别