最近在公司做code review的时候,帮我进行code review的同学,指出我一个类应该使用private修饰,而不是public,我不以为意,回了一句,私有不就是不能继承么,然后,两个老程序员瞬间投来异样之眼神,完蛋,说错话了,简直丢人,利用周六的时间,想想这个面向对象权限控制的问题。
这里说public、private、protected都是针对类来说的。php和java都只支持多继承,java不声明的情况下,默认还有一个包权限,同一个包内拥有访问权限。
鉴于interface使用场景,php这里规定interface内部所有方法必须为公有属性(默认为abstract),属性与类中常量相同(const),接口支持多重继承。
PHP <?php interface demo { const VALUE = 1; public function demo(array $a, ObjectClass $class, callable $call); }变量必须为static final类型,方法也为public abstract
Java public interface demo{ public static final value = 1; public abstract void get() { return; } }别的以后踩坑了再总结。