《数据结构:从应用到实现 java版》---第六天

练习:

static:方便在没有创建对象的情况下调用域或者方法

比较好的博客:https://www.cnblogs.com/dolphin0520/p/3799052.html

E1.2 概述static域的所有用途

  static域为类的所有对象所共有,在内存中只存在一个副本,它当且仅当类在初次加载的时候会被初始化;可以通过类直接进行调用。静态成员变量虽然独立于对象,但是仍然可以通过对象去访问

  非static域是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static不能用来修饰局部作用域

E1.3 概述static方法的可能使用

  static方法可以通过类名直接进行调用。

  1. static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的;而且可以在没有创建任何对象的情况下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途

 2. static方法可以用来优化程序性能,因为只会在类加载时执行一次,适用于只创建一次对象可以多次使用的场景。

E1.4 静态方法可以引用它所在类的非静态域吗?请说明,非静态方法可以引用静态域吗?请说明

   (1)静态方法不可以引用它所在类的非静态域,因为非静态域的使用需要通过类的对象进行调用,静态方法是直接用类名进行调用的。

          静态方法在构造方法之前执行,非静态域需要在对象创建的时候进行初始化,也就是说非静态域要在对象出现以后才能调用,但是非静态块是在构造函数之前执行的,所以此时对象都还没有产生,所以无法调用非静态域。

     (2)  非静态方法可以引用它所在类的静态域,因为可以通过类名进行直接调用。

E1.5 在定义类时,把一种特殊域定义为public总是安全的,为什么?

    可以被继承

E1.6 从最不严格到最严格排序访问控制级别:public 包访问 protected protected 包访问 private

public:

       1. public修饰类,可以在不同的包之间被使用

       2. public修饰域,可以在本类中使用在类可以被访问的地方都是可以使用的,可以被继承

       3. public修饰方法,可以在本类中使用在类可以被访问的地方都是可以使用的,可以被继承

protected:protected域或方法或类对子类是可继承的,而且对于同一个包中的类是可访问的在默认包访问权限的基础上,其他包中子类也可以访问。

包访问权限:没有任何修饰符修饰的域/方法/类,可以被同一个包中的所有类访问和继承。而这个包外面的任意类都不能访问或继承它。

https://blog.csdn.net/wanghao_0206/article/details/52710094

 

posted @ 2018-08-21 00:02  piaxiaohui  阅读(572)  评论(0编辑  收藏  举报