面向对象3

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

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

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

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,执行构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python3中,面向对象编程是一种编程范式,其中一切皆为对象。每个对象都有三个属性:id、类型type和数值。其中id是对象的地址,id相同则表示为同一个对象,不同对象的值可以相同。 类的定义使用关键字class,在类中可以定义成员方法和成员变量。在类中,__new__方法会在__init__方法前被执行,它会创建并返回一个新的实例对象,然后传递给__init__进行初始化。__new__不是一个成员方法,而是一个静态方法。在Python中,所有的类都是type类型的对象。类实例化对象的过程中,构造函数不是__init__方法,而是__new__方法,它会返回一个对象,即对象构造函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python3快速入门(六)——Python3面向对象](https://blog.csdn.net/cdqvkn73338/article/details/100959237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python3 面向对象](https://blog.csdn.net/weixin_52610802/article/details/125537496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值