精华内容
下载资源
问答
  • Java类和对象 详解(一)

    万次阅读 多人点赞 2016-10-06 20:48:02
    几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。...

    一、面向对象简述

    面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。

    但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。

    在面向对象定义之中,也规定了一些基本的特征:
    (1)封装:保护内部的操作不被破坏;
    (2)继承:在原本的基础之上继续进行扩充;
    (3)多态:在一个指定的范围之内进行概念的转换。

    对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。

    二、类与对象的基本概念

    类与对象时整个面向对象中最基础的组成单元。

    :是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
    对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

    可以一句话来总结出类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。

    三、类与对象的定义和使用

    在Java中定义类,使用关键字class完成。语法如下:

    class 类名称 {
             属性 (变量) ;
             行为 (方法) ;
    }

    范例:定义一个Person类

    class Person {     // 类名称首字母大写
        String name ;
        int age ;
        public void tell() {        // 没有static
              System.out.println("姓名:" + name + ",年龄:" + age) ;
             }
    }

    类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的产生格式(两种格式)如下:

    (1)格式一:声明并实例化对象

    类名称 对象名称 = new 类名称 () ;

    (2)格式二:先声明对象,然后实例化对象:

    类名称 对象名称 = null ;
    对象名称 = new 类名称 () ;

    引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。

    当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
    对象.属性:表示调用类之中的属性;
    对象.方法():表示调用类之中的方法。

    范例:使用对象操作类

    package com.wz.classandobj;
    
    class Person { 
        String name ;
        int age ;
        public void get() {
            System.out.println("姓名:" + name + ",年龄:" + age);
        }
    }
    
    public class TestDemo {
            public static void main(String args[]) {
                Person per = new Person() ;// 声明并实例化对象
                per.name = "张三" ;//操作属性内容
                per.age = 30 ;//操作属性内容
                per.get() ;//调用类中的get()方法
            }
    }

    运行结果:

    姓名:张三,年龄:30

    以上完成了一个类和对象的操作关系,下面换另外一个操作来观察一下:

    package com.wz.classandobj;
    
    class Person { 
        String name ;
        int age ;
        public void get() {
            System.out.println("姓名:" + name + ",年龄:" + age);
        }
    }
    
    public class TestDemo {
            public static void main(String args[]) {
                Person per = null;//声明对象
                per = new Person() ;//实例化对象
                per.name = "张三" ;//操作属性内容
                per.age = 30 ;//操作属性内容
                per.get() ;//调用类中的get()方法
            }
    }

    运行结果:

    姓名:张三,年龄:30

    那么,问题来了,以上两种不同的实例化方式有什么区别呢?
    我们从内存的角度分析。首先,给出两种内存空间的概念:
    (1)堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间;
    (2)栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字)。

    1

    任何情况下,只要看见关键字new,都表示要分配新的堆内存空间,一旦堆内存空间分配了,里面就会有类中定义的属性,并且属性内容都是其对应数据类型的默认值。

    于是,上面两种对象实例化对象方式内存表示如下:
    这里写图片描述

    两种方式的区别在于①②,第一种声明并实例化的方式实际就是①②组合在一起,而第二种先声明然后实例化是把①和②分步骤来。

    另外,如果使用了没有实例化的对象,结果如何?
    如下:

    package com.wz.classandobj;
    
    class Person { 
        String name ;
        int age ;
        public void get() {
            System.out.println("姓名:" + name + ",年龄:" + age);
        }
    }
    
    public class TestDemo {
            public static void main(String args[]) {
                Person per = null;//声明对象
                //per = new Person() ;//实例化对象
                per.name = "张三" ;//操作属性内容
                per.age = 30 ;//操作属性内容
                per.get() ;//调用类中的get()方法
            }
    }

    运行结果:

    Exception in thread "main" java.lang.NullPointerException
        at com.wz.classandobj.TestDemo.main(TestDemo.java:15)

    此时,程序只声明了Person对象,但并没有实例化Person对象(只有了栈内存,并没有对应的堆内存空间),则程序在编译的时候不会出现任何的错误,但是在执行的时候出现了上面的错误信息。这个错误信息表示的是“NullPointerException(空指向异常)”,这种异常只要是应用数据类型都有可能出现。

    四、对象引用传递初步分析

    引用传递的精髓:同一块堆内存空间,可以同时被多个栈内存所指向,不同的栈可以修改同一块堆内存的内容。

    下面通过若干个程序,以及程序的内存分配图,来进行代码的讲解。

    我们来看一个范例:

    class Person {     
             String name ;
             int age ;
             public void tell() {        
                       System.out.println("姓名:" + name + ",年龄:" + age) ;
             }
    }
    public class TestDemo {
             public static void main(String args[]) {
                       Person per1 = new Person() ;         // 声明并实例化对象
                       per1.name = "张三" ;
                       per1.age = 20 ;
                       Person per2 = per1 ;  // 引用传递
                       per2.name = "李四" ;
                       per1.tell() ;
             }
    }

    对应的内存分配图如下:

    11

    再来看另外一个:

    class Person {
             String name ;
             int age ;
             public void tell() {
                       System.out.println("姓名:" + name + ",年龄:" + age) ;
             }
    }
    public class TestDemo {
             public static void main(String args[]) {
                       Person per1 = new Person() ;         // 声明并实例化对象
                       Person per2 = new Person() ;
                       per1.name = "张三" ;
                       per1.age = 20 ;
                       per2.name = "李四" ;
                       per2.age = 30 ;
                       per2 = per1 ;// 引用传递
                       per2.name = "王五" ;
                       per1.tell() ;
             }
    }

    对应的内存分配图如下:
    12

    垃圾:指的是在程序开发之中没有任何对象所指向的一块堆内存空间,这块空间就成为垃圾,所有的垃圾将等待GC(垃圾收集器)不定期的进行回收与空间的释放。

    未完待续。。。

    展开全文
  • Java中类对象的概念区别

    千次阅读 2014-08-26 23:29:52
    Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言类和对象的概念,它们在概念上有什么区别呢?  这往往是一个令面向对象的初学者感到迷惑的问题。    下面...
    
    Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中有类和对象的概念,它们在概念上有什么区别呢?
      这往往是一个令面向对象的初学者感到迷惑的问题。
      
      下面的解说虽然针对的是Java语言,但对所有面向对象的程序设计语言都通用。
      
      什么是类
      
      在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。
      举一个浅显的例子。Person(人)是对地球上所有具有特殊智能的生物包括你,我,他,张三,李四等的抽象。
      “你”,“我”,“他”,“张三”,“李四”等等都属于“人”这一类所包含的个体。
      
      Java语言中对类Person的定义往往如下:
      public class Person {
       private String name; //属性:姓名
       private int height; //属性:身高
       private int weight; //属性:体重
      
      
       public Person() {}
       public Person(String name, int height, int weight) {
       this.name = name;
       this.height = height;
       this.weight = weight;
       }
      
       //... some methods...
      
       public void doSth() { //行为:
       //... do something
       }
      }
      
      
      什么是对象
      
      简单一点说,对象是类的具体的个体。比如,张三是类Person的一个对象。Person可能存在无数个对象(就好像地球上存在数十亿人一样)。
      
      Java中,对象的创建可以使用new来创建一个对象。比如:
      Person zhangsan = new Person("Zhangsan", 170, 65); //创建对象:“Zhangshan”
      zhangsan.doSth(); //对象行为:对象自己发出行为
      
      
      类和对象的关系
      
      类和对象的区别
      1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
      2,对象是类的一个具体。它是一个实实在在存在的东西。
      3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
      4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
    展开全文
  • POJO对象和Java类对象区别和联系是什么 POJO对象和Java类对象区别和联系是什么
  • 怎么来理解java类和对象区别

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

    对象在需求中的使用

    在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。

    以把大象装冰箱为例进行分析:

    在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
    需求:把大象装冰箱里
    对象:大象、冰箱
    分三步:
        1、打开冰箱门
        2、将大象装进去
        3、关闭冰箱门
    分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
        1)冰箱打开
        2)冰箱存储
        3)冰箱关闭
    用伪代码描述,上述需求中有两个具体的事物 大象 和  冰箱
    描述大象:
        class 大象
            {
            }
    描述冰箱
        class冰箱
            {
                void 打开(){}
                void 存储(大象){}
                void 关闭(){}
            }
    当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
    使用对象:
        1、创建冰箱的对象
            冰箱 bx = new 冰箱();  
        2、调用冰箱的功能
            对象.功能();
            bx.打开();
            bx.存储(new 大象());
            bx.关闭();
    总结:
    1、先按照名词提炼问题领域中的对象
    2、对对象进行描述,其实就是在明确对象中应该具备的属性和功能
    3、通过new的方式就可以创建该事物的具体对象
    4、通过该对象调用它以后的功能。

    对象在代码中的体现

    在分析现实生活中的事物时发现,这些事物都有其具体的特点和功能,这些特点和功能就组成了这个特殊的事物。
    描述小汽车。
    分析:
    事物的特点(属性):
    颜色。
    轮胎个数。
    事物的(功能):
    运行。

    发现:事物其实就是由特点(属性)和行为(功能)组成的。
    可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。
    小汽车 {
    颜色;
    轮胎个数;
    运行() { }
    }
    通过计算机语言Java来描述这个事物。

    定义类的格式

    public class 类名 {
    	//可编写0至n个属性
        数据类型 变量名1;
        数据类型 变量名2;
    	
    	//可编写0至n个方法
    	修饰符 返回值类型 方法名(参数){
    		执行语句;
    }
    }
    

    汽车类

    public class Car {
    	String color;
    	int number;
    
    	void run() {
    		System.out.println(color + ":" + number);
    	}
    }
    
    通过代码的描述,知道类的真正意义就是在描述事物。属性和功能统称为事物中的成员。
    事物的成员分为两种:成员属性和成员功能。
    成员属性在代码中的体现就是成员变量
    成员功能在代码中的体现就是成员方法

    把写好的代码测试一下。需要一个可以独立运行类。

    创建对象的格式:

    类名 对象名 = new 类名();

    测试类

    public class CarDemo {
    	public static void main(String[] args) { 
    		/*
    		 *  测试:Car类中的run方法。
    		 */
    		// 1,创建Car的对象。给对象起个名字。
    		Car c = new Car();// c是类类型的变量。c指向了一个具体的Car类型的对象。
    		// 2,通过已有的对象调用该对象的功能。格式:对象.对象成员;
    		// 3,可以该对象的属性赋值。
    		c.color = "red";
    		c.number = 4;
    		c.run();
    	}
    }
    

    类和对象的区别

    面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。其中,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。接下来通过一个图例来抽象描述类与对象的关系,如下图所示。


    在上图中,可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。从上图中可以明显看出对象是根据类创建的,并且一个类可以对应多个对象,接下来分别讲解什么是类和对象。

    经过前面几个知识点的学习,基本上掌握了类是用于描述事物的,类中可以定义事物的属性和行为。而对象是通过描述的这个类,使用new关键字创建出来,通过对象就可以调用该对象具体的属性和功能了。

    局部变量和成员变量区别

    理解清楚了类和对象之后,发现在描述类的属性定义变量差别不大,唯一区别就是位置发生了改变,那么类中定义的变量,和在方法定义的变量有什么差别呢?总结下面几点异同
    区别一:定义的位置不同
        定义在类中的变量是成员变量
        定义在方法中或者{}语句里面的变量是局部变量
    区别二:在内存中的位置不同
        成员变量存储在对内存的对象中
        局部变量存储在栈内存的方法中
    区别三:声明周期不同
        成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
        局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
    区别四:初始化不同
        成员变量因为在堆内存中,所有默认的初始化值

        局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

    本文结。


    展开全文
  • Java中类对象的关系与区别

    千次阅读 2018-04-12 12:43:59
    什么是就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言是对一“事物...而对象的产生在Java中是使用new来实现的。做一个比方老...
    什么是类?

    类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。

    什么是对象?

    对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。

    类是对象的一个集合,对象是类的实例。

    而对象的产生在Java中是使用new来实现的。

    做一个比方老师是对一个群体的称呼,老师这个群体就是一个类,而老师又可以具体到某一个人,比如张老师、王老师之类的等等,张老师就是一个对象。

    类和对象的区别

      1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
      2,对象是类的一个具体。它是一个实实在在存在的东西。
      3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
      4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

    展开全文
  • java中类对象的关系与区别

    万次阅读 多人点赞 2019-04-08 15:25:54
    类和对象区别  1,是一个抽象的概念,它不存在于现实的时间/空间里,只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个,它虽然可以包含很多个体,但它本身不存在于现实世界上。 ...
  • java中对象和引用对象区别

    千次阅读 2019-09-15 15:49:09
    对象,就是的一个实例化,把一个抽象不好理解的举出一个实体来,例如人类是一个,会吃喝拉撒,实例化出一个小明这个具体的人。 对象引用,就是得给这个人取个名字来指代他,跟c++的指针一样,指向这个人,可以...
  • java中对象和对象的引用的区别

    千次阅读 2017-09-25 00:01:32
     这段话来自于《Java编程思想》,很显然,从这段话可以看出对象和对象引用不是一回事,是两个完全不同的概念。举个例子,我们通常会用下面这一行代码来创建一个对象:  Person person = new Pe
  • java 对象和类锁的区别

    千次阅读 2017-09-18 15:19:32
    2.当一个类中有多个synchronized修饰的同步方法时,其中一个方法被线程访问持有锁,其他方法同样被锁住,其他线程依然不能访问其他同步方法,因为此时锁住的是该对象,相当于整个对象锁住了。 3.一个只能有一...
  • 当我们使用java封装了一个实体时,该实体类中,有一些变量函数。此时在该类中的函数,我们可以称之为该实体的方法了,该实体类中的变量,我们可以称之为该实体的属性。我们这里以一个Person实体为例。 ...
  • java中类对象、实例的关系

    千次阅读 2015-06-05 14:31:17
    java中类对象、实例的关系 (刚刚接触java,难免有许多错误,欢迎指正) java作为面向对象编程语言,作为初学者首先要分清对象、实例之间的关系是必要的。 正所谓物以类聚,就是一些具有某些相同特性的...
  • javaScript创建对象和Java创建对象区别

    千次阅读 多人点赞 2018-03-27 09:26:52
    Java和js创建对象区别
  • 透彻理解 Java synchronized 对象和类锁的区别

    万次阅读 多人点赞 2017-02-17 14:34:05
    synchronized 加到 static 方法前面是给class 加锁,即锁;而synchronized 加到非静态方法前面是给对象上锁。...在Task2 定义三个方法 doLongTimeTaskAdoLongTimeTaskB是锁,而doLongTimeTaskC是对象锁。pub
  • js的对象和java的简单区别

    千次阅读 2018-08-03 10:05:59
    js的继承等是通过原型链或其他方法进行实现的,es6的class本质上还是对象和java等的class还是不同的。 java是不可以直接运行的。 js的对象是可以直接调用运行的。这也就是基于对象的特点。 先写到这。  ....
  • 7.1 理解类和对象 7.1.1 对象 现实世界的所有具体的事物都可以视为对象 Java中万物皆对象
  • Java类和对象 详解(二)

    万次阅读 多人点赞 2016-10-07 17:52:38
    上一篇Java类和对象 详解(一)讲解了类和对象的基本概念,定义使用,以及对象引用传递的初步分析,下面接着来讲其他内容。一、面向对象的封装性封装(encapsulation)又叫隐藏实现(Hiding the implementation)。...
  • 1.对象的概念 :万物皆对象,... 的特点:对象的类型,具有相同属性方法的一组对象的集合 4。什么是对象的属性:属性,对象具有的各种特征 ,每个对象的每个属性都拥有特定值 5.什么事对象的方法:对象
  • Java中抽象类和接口的区别

    万次阅读 多人点赞 2019-02-07 14:10:07
    Java中,可以通过两种形式来体现OOP的抽象:接口抽象。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口...
  • java类和对象及python的类似实现

    千次阅读 2018-12-10 13:49:00
    一:java类和对象 首先,我们简单说一下类和对象的理解:所有男的这相当于一个“类”,而某个具体的人就是一个“对象” 类:当做对象的模板 对象:根据类创建,在java,使用关键词new创建新对象 java定义一...
  • 一、知识点回顾:  1.synchronized是Java中的关键字,是一...在java中同步由synchronized关键字实现的,你可以在你类中的方法或者块上使用synchronized关键字,关键字不能在定义的变量或者属性上使用。 对象级别的锁
  • 在程序RUN的一瞬间,什么类啊,静态的东西啊(静态块,静态方法...执行到new对象时,才会实例化对象,记住:类加载,只执行一次,即只有有一个类对象(注意不是实例对象),无论你以后怎么个new法,新new的都是实例对象
  • Java中mutable对象和immutable对象区别

    万次阅读 2016-04-20 17:03:50
    今天读jdk源码Map.java时看到一句话:“great care must be exercised if mutable objects are used as map keys”; 第一次知道mutable对象这个概念,google了一下,维基百科定义如下: “In object-oriented ...
  • java接口与对象区别

    万次阅读 2017-11-21 08:35:57
    深入理解Java的接口抽象 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口抽象。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为...
  • Java反射】类对象

    千次阅读 2021-06-17 15:04:24
    要注意类对象和类的实例对象之间的区别。一个类可以有多个实例对象,但只能有一个类对象。 2 获取类对象的三种方式 2.1 准备实体类 People.java package study; public class People { private int id; private ...
  • 点击进入_更多_Java千百问1、接口抽象有什么区别Java语言,抽象abstract class接口interface是抽象定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。抽象abstract class...
  • 在学习Java反射的过程,遇到了一点疑惑的地方 //1.获取Class对象 Class clazz = Class.forName("com.atguigu.java.fanshe.Person"); //2. 利用Class对象的newInstance方法创建一个的实例 Object obj ...
  • java中什么是什么是对象

    万次阅读 多人点赞 2016-09-12 11:31:44
    Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言类和对象的概念,那么它们在概念上到底有什么区别呢? 下面以java语言为例解释下什么是,什么是对象...
  • java中类成员实例成员调用的区别

    千次阅读 2017-02-10 11:01:48
    但是在Java,允许用Java类的实例–对象来调用类变量,这其实是不符合内部实际运行结果的。 如下代码:public class NullAccessStatic { private static void test() { System.out.println(
  • java中没有指针的概念,取而代之的是引用(这个c++的引用不是一个意思),这个引用是一个变量而已,存放在栈里面(你可以理解栈堆是计算机存储器的不同位置,但是都是用存储数据的),变量内容是它所指向...
  • java对象 POJOJavaBean的区别

    万次阅读 多人点赞 2017-10-10 18:31:38
    "Plain Ordinary Java Object",简单普通的java对象。主要用来指代那些没有遵循特定的java对象模型,约定或者框架的...没有从任何继承、也没有实现任何接口,更没有被其它框架侵入的java对象。 public class BasicI

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 687,061
精华内容 274,824
关键字:

java中类和对象的区别

java 订阅