面向对象-关于静态

1静态可以修饰:成员变量和成员函数。


什么时候定义静态变量(类变量):

当对象中出现数据共享时,该数据被静态所修饰。

对象中的特有数据要定义成非静态,存在于堆内存中。


什么时候定义静态函数:

当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。


eg:

class Person

{

String name;

public void show(){

// 这中间没有使用name,则此函数show()可以定义成static,,,,

}

}


2 每一个应用程序都有共性的功能,可以将这些功能进行抽象,独立封装,以便复用。

eg: 

class ArrayTool{

public void getMax(){

}

public void getMin(){

}

}


class ArrayToolDemo{

ArrayTool arrayTool = new ArrayTool();

arrayTool.getMax();

}

虽然通过建立ArrayTool的对象使用这些工具方法,对数组进行操作,但是发现了问题:

1 对象是用于封装数据的,可以ArrayTool对象并未封装特有数据。

2 操作数组的每一个方法都没有用到ArrayTool对象的特有数据。


如何让程序严谨?

1 所以,这是可以考虑,让程序更严谨(这个程序是不需要ArrayTool对象的),可以将ArrayTool中的方法定义成static,直接通过类名调用即可。

2 同时,将方法都静态后,可以方便使用,但是该类还是可以被其他程序建立对象的(即 ArrayTool arrayTool = new ArrayTool()是合法的),为了更为严谨,强制让类不能建立对象,可以通过将构造函数私有化完成。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值