BitTigerio 2018-03-14
2018-03-14
一、包:package把比较接近的类,规划在同一个包下。
Hero,ADHero 规划在一个包,叫做charactor(角色)
Item,Weapon规划在另一个包下,叫做 property(道具)
在最开始的地方声明该类所处于的包名
package charactor; //在最开始的地方声明该类所处于的包名 public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 }
使用同一个包下的其他类,直接使用即可;但是要使用其他包下的类,必须import
package charactor; //Weapon类在其他包里,使用必须进行import import property.Weapon; public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 //装备一把武器 public void equip(Weapon w){} }
二、成员变量有四种修饰符 。
private私有的
package/friendly/default 不写
protected受保护的
public公共的
1、类之间的关系:
类和类之间的关系有如下几种,以Hero为例:
自身:指的是Hero自己
同包子类:ADHero这个类是Hero的子类,并且和Hero处于同一个包下
不同包子类:Support这个类是Hero的子类,但是在另一个包下
同包类:GiantDragon 这个类和Hero是同一个包,但是彼此没有继承关系
其他类:Item这个类,在不同包,也没有继承关系的类
2、private 私有的:
使用private修饰属性
自身:是可以访问的
同包子类:不能继承
不同包子类:不能继承
同包类:不能访问
其他包类:不能访问
package charactor; import property.Weapon; public class Hero { //属性id是private的,只有Hero自己可以访问 //子类不能继承 //其他类也不能访问 private int id; String name; float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }
3、package/friendly/default 不写:
没有修饰符即代表package/friendly/default
float maxHP; 血量上限
package charactor; import property.Weapon; public class Hero { private int id; String name; // 无修饰符的属性 hp // 自己可以访问 // 同包子类可以继承 // 不同包子类不能继承 // 同包类可以访问 // 不同包类不能访问 float hp; float armor; int moveSpeed; public void equip(Weapon w) {} }
4、protected 受保护的:
受保护的修饰符:protected float hp; 血量
package charactor; import property.Weapon; public class Hero { private int id; String name; // protected饰符的属性 hp // 自己可以访问 // 同包子类可以继承 // 不同包子类可以继承 // 同包类可以访问 // 不同包类不能访问 protected float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }
5、public 公共的:
公共的修饰符:任何地方,都可以访问
public String name; 姓名
package charactor; import property.Weapon; public class Hero { private int id; // public的属性 name // 自己可以访问 // 同包子类可以继承 // 不同包子类可以继承 // 同包类可以访问 // 不同包类可以访问 public String name; protected float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }
那么什么情况该用什么修饰符呢?
从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?
1. 属性通常使用private封装起来
2. 方法一般使用public用于被调用
3. 会被子类继承的方法,通常使用protected
4. package用的不多,一般新手会用package,因为还不知道有修饰符这个东西
再就是作用范围最小原则:
简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了
class Singleton: def __new__: # 关键在于这,每一次实例化的时候,我们都只会返回这同一个instance对象 if not hasattr: cls.instance =