未分类
2020-08-13 10:08:41
1822677238@qq.com
手机扫码查看
面向对象的三个修饰符之static
实例属性
public class demos{
public static void main(String[] args) {
MyClass mc1=new MyClass();
mc1.a=10;
MyClass mc2=new MyClass();
mc2.a=20;
System.out.println(mc1.a+"\t"+mc2.a);
//运行结果 10 20
}
}
class MyClass{
int a;//实例属性
//实例属性是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响其他对象。
}
静态属性
public class demos{
public static void main(String[] args) {
MyClass mc1=new MyClass();
mc1.a=10;
MyClass mc2=new MyClass();
mc2.a=20;
System.out.println(mc1.a+"\t"+mc2.a);
//运行结果 20 20
}
}
class MyClass{
static int a;//静态属性
/*
静态属性是整个类共同持有的共享空间
只有一份,任何对象修改,都会影响其他对象
*/
}
什么是静态
概念:
1.静态static可以修饰属性和方法
2.称为静态属性(类属性)、静态方法(类方法)
3.静态成员是全类所有对象共享的成员
4.在全类中只有一份,不因创建多个对象而产生多份
5.不必创建对象,可直接通过类名访问
public class demos{
public static void main(String[] args) {
MyClass mc1=new MyClass();
MyClass mc2=new MyClass();
mc1.a=10;
mc2.a=20;
mc1.b=100;//自动转换成 MyClass.b
mc2.b=200;
System.out.println(mc1.a+"\t"+mc2.a);
//运行结果 10 20
//静态成员通过类名访问 [类名.属性名]
System.out.println(MyClass.b+"\t"+MyClass.b);
}
}
class MyClass{
int a;
static int b;//静态属性
}
静态方法
public class demos{
public static void main(String[] args) {
MyClass.method1();
//在其他类中,通过 [类名.静态方法名] 访问
}
}
class MyClass{
// static 静态方法
public static void method1(){
System.out.println("MyClass static method1()");
//在本类中,通过 [静态方法名] 访问
method2();
}
// static 静态方法
public static void method2(){
System.out.println("MyClass static method2()");
}
}
java中的方法调用,分为两种
1.静态分派
静态方法中,允许参数列表不同的重名方法,指静态方法之间的重载
2.动态分派
在具有继承关系的情况下,调用实例方法时,自低向上查找可用方法版本,指实例方法的覆盖
java虚拟机方法调用指令
1.invokespacial 私有方法 ,构造方法
2.invokeinterface 调用接口方法
3.invokestatic 调用静态
4.invokevirtual 调用虚方法(父类定义的,日后被子类覆盖的方法)
5.invokedynamic 调用动态链接方法
静态方法允许直接访问静态成员
静态方法不能直接访问非静态成员
静态方法中不允许使用this或super关键字
静态方法可以继承,不能覆盖,没有多态



发表回复