面向对象3

原创 2013年12月02日 00:19:49

类中的属性成为成员变量。

定义在函数中的变量称为局部变量。

成员变量和局部变量的区别?

1,作用范围。

成员变量:定义在类中,作用于整个类。

局部变量:只在它所属的局部大括号中有效。比如函数上的参数,函数中的变量,语句中的变量。

public void function(int x)

{

int y = 0;

for(int z=0; z<3; x++)

{

}

}

x,y,z都是局部变量。

当循环结束时,z在内存中释放。

function函数执行完毕,xy在内存中释放。

2,存储情况。

成员变量:存储在堆内存中,随着对象的存在而存在。

  当对象变成垃圾被回收时,该该对象中的成员变量会消失。

局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候,才存在。

  当方法运行完毕,或者语句运行完毕时,局部会被自动释放。

所以成员变量也称之为实例(对象)变量.

3,初始化情况。

成员变量:在堆内存中有默认初始化值。

局部变量:必须手动初始化后,才可以被使用。

匿名对象:没有名字的对象。

是定义对象的一种简化形式。

使用注意:

1,当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。

为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。

如果对象要多成员进行多次调用,必须给对象起个名字。不能在使用匿名对象。

2,匿名对象可以实际参数进行传递。

当局部变量和成员变量重名时,为了以示区分。

可是用一个关键字完成。this

this:关键字代表是对象的引用。也就是this在指向一个对象。

指向哪个对象呢?

this:就代表所在函数所属对象的引用。

简单说:哪个对象调用this所在的函数,this就代表哪个对象。

private : 是一个权限修饰符。

只能修饰成员(成员变量和成员函数)

私有的成员只在本类中有效。

当成员私有后,提高了安全性。但是访问权限降低了。

这时可以通过对外提供公有方法的形式对其进行访问。

这样的好处是,可以在方法中对成员变量的访问进行控制。

通常将成员变量私有化,并通过对外提供set 和 get方法对其进行设置和获取。

私有就是封装的一种体现形式。

注意:私有仅仅是封装的一种体现形式而已。

类:是对事物的描述。

对象:是该类事物实实在在存在的个体

类:就是一个组对象共性的属性和行为的抽象。

对象:其实就是一个用于封装的实体。

封装的原则:将不该对外提供的,都隐藏起来。提供公共的访问方法。

代码中具体体现原则:将类中的属性都私有化,对外提供公共的访问方式。

      好处:通过方法访问属性,可以实现对数据的可控。

   具体体现:将成员变量私有化,用private修饰。对外提供对应的set 和 get方法对器进行访问。比如age对应两个方法。void setAge(int a);int getAge();

构造函数是初始化对象。是对象建立时调用。

一般函数是给对象添加功能。是对象建立后调用。

为了区分这两个函数的调用。

this.方法();对象调用一般方法。

this.();调用构造方法。而且这个this();调用构造函数时,必须定义在构造函数的第一行,因为初始化动作要先执行。

用这两种调用方法,进行两种函数的区分。

thisthis需要定义在函数中,是蓓蕾对象的引用。那么它到底引用哪个对象呢?哪个对象调用this所在的函数,this就引用哪个对象

this的应用:

1,当定义功能时,功能内部需要用到本类对象时,就用this表示。

2,当成员变量和局部变量同名的时候,用this来区分。

3,当构造函数之间进行调用的时候,可以使用this语句。

要求:

1,看到代码中的this只要表示的是什么。

2,在自己开发可以使用this

任何成员被访问使用,必须要被调用。如果是非静态成员,必须要被对象调用。在本类中调用是使用的是this。如果是静态成员,必须要被类名调用。只不过这两个在书写时,可以省略。静态变量在静态区中也会进行默认初始化。

静态修饰的特点:

static是一个修饰符,用于修饰成员(成员变量和成员函数)

1,静态成员随着类的加载而加载。

2,静态成员优先于对象存在。

3,静态成员被所有对象所共享

4,静态成员多了一种调用方式,可以被类名直接调用。

静态使用的注意事项。

1,静态方法只能访问静态成员。

非静态方法既可以访问静态又可以访问非静态。

2,静态方法中不可以定义thissuper关键字。

因为this代表是对象。而静态存在时,有可能没有对象。所以静态方法运行时,this是没有任何对象代表的。

简单说,先进内存的数据不可以访问后进内存的数据,可是后进内存数据可以访问先进内存的数据。

3,主函数是静态的。

静态:

好处:静态成员多了一种调用方式。可以直接被类名调用 格式 :类名.静态成员。也可以被对象调用。

弊端:静态方法只能访问静态成员,出现了访问局限性。

静态修饰的数据对象共享的数据,存放在方法区的静态区中。

非静态的数据,是每一个对象特有数据。存放在对象的所属的堆内存中。

当成员变量被静态修饰后。和非静态成员变量的区别:

1,静态变量也称为类变量,也就是直接可以被类名调用的变量。这个变量是所属于类的。

   非静态变量成为成员变量,或者实例变量,是被对象调用的,是所属具体对象的。

  

2,静态变量随着类的加载而加载,也意味着随着类的消失而消失。生命周期最长。

   实例变量,随着对象的创建而加载,随着对象的消失而消失。按照对象的生命周期而存在。

3,静态变量存储在方法区的静态区中。

   实例变量存在于对象所属的堆内存中。 

4,静态变量数据,被所有对象所共享。

   实例变量是对象中的特有数据。

什么时候使用static呢?

成员变量:

什么时候被静态修饰呢?

当该成员变量所存储的数据,每一个对象都是一样的,这时没有必要把该数据存储到每一个对象中,

只要让所有对象共享该数据即可,这是成员就需要被static修饰。

当数据需要被对象共享时,就使用static修饰。

这样可以对共享的数据节约内存。

成员函数:

当成员函数内并没有访问对象中的特有数据时,就将该方法定义成静态的。

简单说:该函数如果访问了成员变量,该函数就是非静态的。

该函数没有访问过成员变量,或者访问过静态的成员变量,那么为了程序的严谨性,将该方法定义成静态的。

因为该方法不需要对象存在,既可以使用。

发现虽然这个工具类可以使用。

但是,其中的每一个功能都没有对该类的对象的特有数据进行访问,

那么这些功能,就不需要对象调用。

除了对象调用方式外,还有一个类名调用方式。

所以可以将这些功能都定义成static的。

这个类中的功能都被静态化后,只要使用类名调用即可。

但是其他程序在使用该类时,因为该类中有一个默认的构造函数,

所以其他程序还可以建立该类对象,

而该类并不需要对象就可以使用类中的成员。所以这个对象建立是没有意义的。

为了提高程序的严谨性。应该强制不让其他程序建立该类对象。

当该类中的属性或者行为都是静态的时候,该类创建对象是非常没有意义的。

所以就要强制不让其他程序建立对象,也就是将该类的构造函数私有化。

这样,你即使建立了该类对象,也没有办法初始化。 

静态代码块在程序中的执行顺序:

1,类一加载就执行静态代码块

2,函数的默认初始化,和显示初始化

3,执行构造代码块

4,执行构造函数

面向对象范式的3大原则

脑图
  • yqj2065
  • yqj2065
  • 2015年09月18日 12:15
  • 615

笔试题2:面向对象的基本特征

题目:面向对象的基本特征,并简单述之。 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
  • onlyou2030
  • onlyou2030
  • 2015年07月23日 13:03
  • 292

面向对象的几个基本关键字(一)

类变量:类变量在类中用static关键字声明,在任意的方法,构造函数和代码块外部类变量在程序启动时被创建,在程序结束时被销毁常量:常量是标记为final关键字的类变量,类变量的特性常量均有,再次列出与...
  • lxh5431
  • lxh5431
  • 2016年07月11日 21:25
  • 207

PHP---面向对象的3个特性

面向对象有3个特性, 1是封装 2是继承 3是多态 封装 就是类中的属性,一般不直接被类外调用,使用get和set方法调用,封装后使用。封装后安全性高,属性和方法有访问3个修饰符  ...
  • huyishero
  • huyishero
  • 2016年11月22日 23:04
  • 227

Java面向对象练习

1、定义长方形类,含:   属性:宽、高(整型);   方法:求周长、面积;   构造方法3个:(1)无参——宽、高默认值为1;(2)1个参数——宽、高均为参数值;(3)2个参数——...
  • sulan2131
  • sulan2131
  • 2017年04月02日 17:30
  • 516

面向对象的4个基本特征

上个周末霸笔大唐移动的应用程序软件工程师试题,有一道面向对象的4个特征,以前都是接触的三个,怎么多出了一个?原来就是抽象性。。。面向对象的4个基本特征 在上述面向对象的基本概念基础之上,不可避免地要涉...
  • wuxinyicomeon
  • wuxinyicomeon
  • 2010年11月03日 10:17
  • 3995

面向对象在javascript中的三大特征之封装

封装 封装(Encapsulation):就是把对象内部数据和操作细节进行隐藏。很多面向对象语言都支持封装特性,提供关键字如private来隐藏某些属性和方法。要想访问被封装对象中的数据,只能使用...
  • Tyro_java
  • Tyro_java
  • 2016年04月15日 21:46
  • 2010

面向对象六大原则(三):里氏替换原则

面向对象程序设计(OOP)的六大原则是我对《Android源码设计模式解析与实战》的读后笔记。要设计出灵活又便于维护的软件,必须要求我们的设计能力与代码质量高,也就是我们所谓的编程思想。因此,我们需以...
  • Loften_93663469
  • Loften_93663469
  • 2015年12月12日 22:46
  • 844

面向对象的三个基本元素,五个基本原则

三个基本元素: 1. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护...
  • MissLong
  • MissLong
  • 2014年01月17日 16:44
  • 10547

C#面向对象三大特性

想要学好面向对象编程,除了掌握语法结构外最重要的就是熟悉面向对象三大特性,这三大特性不是相互独立的而是相互关联、你中有我我中有你的关系,想要真正了解三大特性必须把这三部分当做一个整体来考虑。...
  • xiaouncle
  • xiaouncle
  • 2016年11月23日 21:02
  • 2712
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象3
举报原因:
原因补充:

(最多只允许输入30个字)