面向对象简述--对象、引用、指针

类和成员对象

【定义类】

(1)两个重要概念:

类(class):类是某一批对象的抽象,可以把类理解成某一种概念。

对象(object,也被称为实例,instance):对象才是一个实际存在的实体。

(2)定义类的简单语法:

   [修饰符]  class  类名{

         零到多个构造器定义。。

         零到多个成员变量。。

         零到多个方法。。         

   }

成员变量:定义类或该类的实例所包含的状态数据。

方法:定义该类或该类实例所包含的行为特征或功能实现。

构造器:用于构造该类的实例。Java语言通过new关键字来构造实例,从而返回该类的实例。构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此,java语言提供了一个新的功能:如果程序员没有为一个类编写一个构造器,则系统会为该类提供一个默认的构造器(总是无参的)。一旦程序员为一个类提供了构造器,系统将不会为该类提供构造器。

注:

(i)static修饰符:

       是一个特殊的关键字,可用于修饰方法和成员变量等成员,static修饰的成员表 明它属于这个类本身,而不属于该类的单个实例,因此通常把static修饰的成员变量也称为类变量和类方法。不使用static修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。因此通常把不适用static修饰的成员变量和方法称为实例变量、实例方法。由于static的英文翻译是“静态”,所以有时也把使用static修饰的成员变量和方法也称为静态变量和静态方法,反之,称为非静态变量和非静态方法。静态成员不能直接访问非静态成员。

       static的真正作用就是用于区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例,static相当于一个标志,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例。

(3)构造器

构造器名必须和类名相同。

问:构造器不是没有返回值吗?为什么不能用void声明呢?

答:简单的说,这是java的语法规定。实际上,类的构造器器是返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意:不要在构造器里显示使用return来返回当前类的返回对象,因为构造器的返回值是隐式的。

【对象、引用、指针】

Person p = new Person();

p.name = "李三";

p.age = 29;

       与数组类型相似,类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存中,指向实际的Person对象;而真正的Person对象则存放在堆(heap)内存中。如上图。

        栈内存里的引用变量并未真正的存储对象的成员变量,对象的成员变量数据实际上存放在堆内存里;而引用变量只是指向该堆内存里的对象。

       当一个对象被创建成功以后,这个对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用来操作该对象。

注:如果希望垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null

每接触一个新领域,我就像一块掉进水里的海绵,四面八方的养分都让我不断充实。O(∩_∩)O~
原文地址:https://www.cnblogs.com/zhzcode/p/9596325.html