java面向对象编程-静态字段和静态方法

news/2024/7/5 18:32:51 标签: 静态方法, static

静态字段
实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一个共享“空间”,所有实例都会共享该字段。举个例子:

public class Hello{
	public static void main(String[] args){
		Person p=new Person("sikui",25);
		p.number=200;
		Person p1=new Person("ss",23);
		p1.number=250;
		
		System.out.println(Person.number);
	}
}
class Person {
	public String name;
	public int age;
	public static int number=1000;
	public Person(String _name,int _age) {
		this.name=_name;
		this.age=_age;
	}
}

对于静态字段,无论修改哪个实例的静态字段,效果都是一样的:所有实例的静态字段都被修改了,原因是静态字段并不属于实例
**对于静态字段可以用:类名.静态字段 ,实例名.静态对象 来访问静态对象。

静态方法
静态方法内部,无法访问this变量,也无法访问实例字段,它只能访问静态字段。
静态方法属于整个类,可以使用类名.方法 ,实例名.方法
例如:

public class Hello{
	public static void main(String[] args){
		Person.play();
		Person p=new Person();
		p.play();
	}
}
class Person {
	public String name;
	public int age;
	public static int number=1000;
	public static void play(){
		System.out.println("我是静态方法"+number);
	}
}

接口静态字段
因为interface是一个纯抽象类,所以它不能定义实例字段。但是,interface是可以有静态字段的,并且静态字段必须为final类型:

public interface Person {
    public static final int MALE = 1;
    public static final int FEMALE = 2;
}

实际上,因为interface的字段只能是public static final类型,所以我们可以把这些修饰符都去掉,上述代码可以简写为:

public interface Person {
    // 编译器会自动加上public statc final:
    int MALE = 1;
    int FEMALE = 2;
}

http://www.niftyadmin.cn/n/1035869.html

相关文章

java面向对象编程-方法 构造方法 重载

在Java中,我们经常看到public、protected、private这些修饰符。在Java中,这些修饰符可以用来限定访问作用域. public 定义为public的class、interface可以被其他任何类访问 private 定义为private的field、method无法被其他类访问 protect…

iOS-CocoaPods的安装和使用

cocoaPods的作用 在开发iOS项目时,会常使用到第三方类库。   惯常做法是到GitHub上或其它网站下载一个一个的类库,然后导入到工程中,并且引入各种的类库,做各种的配置。有时候还要处理ARC与MRC的问题,很麻烦。  …

java核心类-String

String 在Java中,String是一个引用类型,它本身也是一个class,实际上字符串在String内部是通过一个char[]数组表示的,String太常用了. 常用: String str"hello world";字符串的比较:equal实现 不能使用=&…

VL01N/QA32/QA11出口增强

需求:某工厂某库存地点销售发货时不需要做检验批处理. 分析:SAP标准质量管理视图只能控制到工厂级别,无法实现库存地点级别的控制. 所以寻求abap方式去解决,寻遍N多出口与增强也无法实现,最后只能进行残忍 的标准程序debug了. 程序名:FV50WF0W 程序段: *... Check QM status? …

设置placeholder的颜色

方法一:自定义UITextField类,重写drawPlaceholderInRect方法 - (void)drawPlaceholderInRect:(CGRect)rect { [self.placeholder drawInRect:CGRectMake(0, 10,rect.size.width, 25) withAttributes:{ NSForegroundColorAttributeName:[UIColor whiteCol…

BADI修改VL02N屏幕字段

SE18 查看 badi LE_SHP_DELIVERY_PROC .我们会发现系统对这个 badi 有实现了一个类 . 下面我们会参考这个类的方法实现我们的需求 . 如图 .1.SE19创建badi LE_SHP_DELIVERY_PROC的实现: ZI_SHP_DELIVERY_PROC.再创建增强实现: ZIM_SHP_DELIVERY_PROC.之后如下图,比较…

如何实现推送引导

思路篇: 1.图形搭建:自定义View + Xib 2.实现逻辑: 1、将视图加入根视图控制器 2、如何决定显示与否(只在程序当前版本第一次打开的时候显示):取到当前版本号,与沙盒中的版本号比较…

android studio apk签名及配置

目录一.keytool 工具使用1.keytool 查看密码2.下载keytool工具,签名二.使用apksigner 进行签名三. android studio 签名系统apk对apk进行签名有两种方式一种是通过android stuido 来进行签名,另一种是通过keytool来进行签名,本篇主要来讲解后…