美文网首页
基本概念、对象和类、构造器、static

基本概念、对象和类、构造器、static

作者: root_zhb | 来源:发表于2018-01-05 19:39 被阅读0次

(基本概念、对象和类、构造器、static)

一、基本概念

面向对象是站在对象的角度思考问题,把多个功能合理的放到不同对象里,强调的是具备某些功能的对象。具备某种功能的实体,称为对象。面向对象最小的程序单元是:类.

面向对象三大特征:

1:封装(Encapsulation):将对象的实现细节隐藏起来,通过公共的方法来向外暴露该对象的功能。

2:继承(Inheritance):子类继承父类,子类是一种特殊的父类,能直接或间接获得父类里的成员。

3:多态(Polymorphism):直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。

千万不要误解为面向对象一定就优于面向过程的设计

简单的说:编码是人的工作,面向对象更加适合人,而面向过程更适合计算机。

二、对象和类

对象可以定义成包含状态和行为的一个实体,对象(object)也称为实例(instance)。

具有相同特性(状态)和行为(功能)的对象的抽象就是类。

对象是类的实例,类是对象的模板。

类具有特性,对象的状态,用成员变量来描述,封装数据。

类具有功能,对象的行为,用方法来描述。

1、类相关

类定义

类的全限定名称: 包名.类名;

2、对象

1):根据类来创建对象的语法:    类名  变量  =  new  类名();

2):给字段设置值:                        对象变量.字段名 = 该类型的值;

3):获取字段的值:                        该字段类型  变量 = 对象变量.字段值;

4):通过对象调用方法.                对象变量.方法(实参);

对象实例化过程

对象的打印和比较对象以及匿名对象和对象的生命周期:

-------------------------------------------------------------

1):对象的打印操作:

    打印对象的时候,打印出来的效果,如:Servant@3294e4f4.

    类的名称@十六进制的hashCode.

    其实,我们打印对象,往往关系的是该对象中的数据是多少,期待讲解Obejct的toString方法.

2):对象比较操作:

    ==号:对于基本数据类型来说,比较的是值.

              对于引用数据类型来说,比较的是在内存中的地址值.

                每次使用new关键字,都表示在堆值新开辟一块内存空间,不同的内存空间,地址值不同.

    需求:如果对象拥有完全相同的数据,我就想让他们相等. 期待:Object的equals方法.

3):对象的生命周期:

    对象什么时候出生:每次使用new关键字的时候,就会在内存开辟新的空间,此时对象开始存在.

    对象的结束:当堆中的对象,没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候,对象被销毁了,回收垃圾的目的,释放更多的内存空间.

4):匿名对象: 没有名称的对象,创建对象之后没有赋给某一个变量.

      new Servant();//匿名对象,匿名对象只是在堆中开辟一块新的内存空间,但是没有把该空间地址赋给任何变量.

      因为没有名称,匿名对象仅仅只能使用一次,一般的,把匿名对象作为方法的实参传递.

三、构造器

构造器:如果我们没有显示提供构造器,则编译器在编译时创建一个缺省的构造器.

但是,如果我们显示定义了一个构造器,则编译器不再创建默认构造器.

构造器是一种特殊的方法,也可以存在重载.

四、static

static修饰的资源属于类级别,而不是对象级别。

static修饰符的特点:

1):static修饰的成员(字段/方法),随着所在类的加载而加载. 当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了.

2):优先于对象的存在. 对象是我们手动通过new关键字创建出来的.

3):satic修饰的成员被该类型的所有对象所共享. 根据该类创建出来的任何对象,都可以访问static成员.

表面上通过对象去访问static成员,其本质依然使用类名访问,和对象没有任何关系(通过反编译看到的).

4):直接使用类名访问static成员 因为static修饰的成员直接属于类,不属于对象,所以可以直接使用类名访问static成员.

什么时候定义成static的字段和方法:

  如果这个一个状态/行为属于整个事物(类),就直接使用static修饰. 被所有对象所共享.

  在开发中,往往把工具方法使用static修饰.(工具对象只需要一份即可,把该类设计为单例的)

相关文章

  • 基本概念、对象和类、构造器、static

    (基本概念、对象和类、构造器、static) 一、基本概念 面向对象是站在对象的角度思考问题,把多个功能合理的放到...

  • 面向对象(上)

    基本概念 成员变量、构造器、方法的构造顺序随意,不会造成不同的影响 带static的方法不能访问非static的方...

  • 面向对象

    类和对象 构造器(构造方法) 1.构造器是一个类创建对象的根本途径,如果程序员没有为一个类编写构造器,那么系统会为...

  • java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类...

  • Java基础之面向对象详解

    ##################################### 基本概念 类与对象 构造方法及其重载 ...

  • Kotlin学习笔记之 5

    5.Kotlin 类和对象 构造器kotlin中一个类只能有一个主构造器和一个或多个次构造器。主构造器可以直接跟在...

  • JS对象和继承

    JS对象和继承 JS是个无类的语言,因此对于对象构造器(类)和对象的继承就值得我们研究了。本文讲述JS中构造器的表...

  • 面向对象

    1.面向对象技术的基本概念 对象,类,继承 2.C++中的空类默认产生哪些成员函数 编译器默认产生默认构造函数,析...

  • 静态代码块、构造代码块 继承情况下执行顺序

    static{ }静态代码块在类加载时执行。{ }构造代码与构造器在实例化成对象时会先后顺序一组执行。在继承状态下...

  • 继承

    继承 类 超类和子类 定义子类 覆盖(override)方法 调用超类方法 子类构造器 调用超类构造器 一个对象变...

网友评论

      本文标题:基本概念、对象和类、构造器、static

      本文链接:https://www.haomeiwen.com/subject/kbgsnxtx.html