访问控制符与非访问控制符

先讨论非访问控制符
类有两个非访问控制符,abstract 和final
abstract类,抽象类,没有具体对象的概念类
抽象类是它所有子类公共属性集合,所以使用抽象类提高开发效率和易维护.
不能创建abstract 类的实例,然而可以创建一个变量,其类型是一个抽象类.并让它指向具体子类的一个实例.
public abstract class Drawing {
    public abstract void DrawDot();
    public void drawLine() {
        System.out.println("Drawing method");
    }
}
public class Machinedrawing extends Drawing {
    public void DrawDot() {
        System.out.println("Machinedrawing method");
    }
}
public class DrawTest {
    public static void main(String args[]){
        Drawing d=new Machinedrawing();
        d.DrawDot();
        d.drawLine();
    }
}
运行结果:
Machinedrawing method
Drawing method
子类覆盖了父的方法.
final 类称为最终类,说明这个类不可能有子类,通常用来定义有固定作用,用来完成某种标准功能的类
abstract 和final 不能同时修饰一个类,因为abstract 类自身没有具体对象,需要派生子类后再创建对象,而final 类没有子类.同时修饰就没有意义。
用static 修饰符的域是仅属于类的静态域。对于该类的任何一个对象而言,静态域是一个公共的存储单元,任何一个类的对象去访问它,取到的都是相同的值。同样任何一个类的对象去修改它时也都是对同一个内存单元进行操作。
class PhoneCard200{
static String connectNummber="200";
static double additoryFee;
...
}
public static void main(String args[]){
PhoneCard200 my200_1=new PhoneCard200();
PhoneCard200 my200_2=new PhoneCard200();
my200_1.additoryFee=0.1;
System.out.println("第二张卡的附加费:"+ my200_2.additorFee);
System.out.println("200卡的附加费:"+ PhoneCard200.additorFee);
}
第二张卡的附加费: 0.1
200卡的附加费: 0.1
静态初始化器由static引导一对大括号括起的语句组。对类自身进行初始化,它所属的类加载到内存时同系统调用执行。
public class StaticInitDemo {
    static int i=5;
    static {
        System.out.println("static code i="+ i++);
    }
}
public class Test {
    public static void main(String args[]) {
        System.out.println("main code i=" + StaticInitDemo.i);
    }
}
final 修饰的变量为最终域,程序中常需要定义各种类型的常量,可以final 来修饰。它在取值在程序的整个执行过程中都不会过变
想改变final变量的值会导致一个编译错误。因为它是所有类的对象的常量成员,其数值都固定一致,为了节省空间,常量通常声明为static.
volatile修饰的为易失域,说明这个域可能同时被几个线程所控制。
方法
修饰符abstract 修饰的抽象方法是一种仅有方法头,而没有具体方法体和操作实现的方法。不同子类某一部队不相同时,可以在抽象
父类中定义抽象方法。
静态方法 static 是属于整个类的方法,调用这个方法是应该用类名做前缀,而不是某个具体的对象名。
由于static方法是属于整个类的,所以它不能操纵和处理某个对象的成员变量,而只能处理属于整个类的的成员变量,也即static方法只能处理static域。
最终方法 final 不能被当前类的子类重新定义的方法。这样,就固定了这个方法所对应的具体操作,可以防止子类对父类关键方法的错误的重定义,保证了程序的安全性和正确性。已经被private修饰的私有方法以及在final类中的方法,都被缺省地认为是final的。因为这些方法要么不可能被子类所继承,要么没有子类。
本地方法 native 一般用来声明有其他语言书写的方法体并具体实现功能的特殊的方法。
synchronized 同步方法 主要用于多线程共存的程序中协调和同步。
访问控制符。
类只有public 可以修饰,或不写(缺省)
变量或方法可以是 public private protected 或缺省
缺省访问性为包访问性。
属性和方法/类    public                   缺省
­
public          A                        B
protected      B+C                       B
缺省            B                        B
private         D                        D      
A:所有类,B:包中类 C:所有子类 D:本类
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值