java非访问控制符static final abstract

一、static(修饰方法,变量)

简单来说,成员变量(方法)加了static成为类变量(类方法),只分配一个空间;不加为实例变量,给每一个对象分配一个空间,之间互不影响
类方法不需要创建对象,使用时直接类名调用就可以;
类方法只能直接访问类变量或类方法参数,不能直接访问实例变量。非静态方法可直接访问本类中的静态变量和非静态变量

public class scope {
 static int a;//类变量或静态变量
 int b;//实例变量
 public static void main(String args[]) {
  a++;//main就是类方法,所以main中可直接访问a
  System.out.println("a="+a);
  scope s1=new scope();
  s1.a++;
  System.out.println("s1.a="+s1.a);
  s1.b++;//b是实例变量,访问前需创建对象,使用对象的句柄访问
  System.out.println("s1.b="+s1.b);
  scope s2=new scope();
  s2.a++;
  System.out.println("s2.a="+s2.a);
  s2.b++;
  System.out.println("s2.b="+s2.b);
  scope.a++;//类变量可通过类名访问,也可直接用对象名访问
  System.out.println("最后");
  System.out.println("a="+a);
  System.out.println("s1.a="+s1.a);
  System.out.println("s2.a="+s2.a);
  System.out.println("s1.b="+s1.b);
  System.out.println("s2.b="+s2.b);
 }
}
public class scope {
 static int a;//类变量或静态变量
 int b;//实例变量
 public static void main(String args[]) {//类方法main对变量及非静态方法test的访问(访问前先创建对象)
  scope s1=new scope();
  s1.test();//静态方法不能直接访问非静态方法,要先创建对象
  test1();//静态方法相互调用就直接调用就好
 }
 static void test1()
 {
  a++;
  System.out.println("a="+a);
  scope s2=new scope();
  s2.b++;
  System.out.println("b="+s2.b);
 }
 void test()
 {
  a++;
  System.out.println("a="+a);
  b++;
  System.out.println("b="+b);
 }
}

二、final(修饰类,方法,变量)

1、修饰类,final修饰的类为最终类,不能被继承(出于安全考虑,保证类中的成员变量或方法不被恶意更改)
2、修饰方法,final修饰的方法为最终方法,不能被覆盖
3、修饰变量,final修饰的变量是字符常量,代表常量,在一次赋值后其值不能改变

final class first{
 final int a=1;
 final void t() {
  System.out.println("a"+a);
 }
}
class second extends first{//错误,不能继承
 void t() {//错误,不能覆盖
  a++;//错误,不能修改
  System.out.println("a"+a);
 }
}

三、abstract(修饰类,方法)

1、修饰类,修饰的是抽象类,即类中有些内容还没有定义完整,只是将头部分定义完整了。不能创建抽象类的对象,抽象类一般是用来做父类的,即可被其他类继承。
2、修饰方法,修饰的是抽象方法,只定义了方法头部,没有方法体;抽象类不一定有抽象方法,但含有抽象方法的类一定是抽象类

//abstract class father{}
abstract class father{
 abstract void tt1();//内方法为abstract型,类前必须也加abstract
 abstract void tt();
}
abstract class scope extends father{//子类中没有完全实现父类中的抽象方法,因此子类中有抽象方法存在,子类也应该定义为抽象的
  void tt()
 {
  System.out.println("son");
 }
 public static void main(String args[])
 {
  scope s=new scope();
  s.tt();
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值