我有一个特点:
object ImplementingThing extends Thing[SomeThing1, Something2] {
...
override def SomeMethod() =
s"SomeOtherFilePathString"
和一些扩展这个特征的对象:
function [x,y,w,z] = check_location(j,new_loc,size)
disp(j);
a = j / size + 1; %Finds 1st element of compared array
b = mod(j,size); %Finds 1st element of comparing array
int8(a) %Must be whole integer
int8(b) %" "
fprintf('a = %g',a)
if b == 0 %1st element cannot be 0
b = b + 1;
else
;
end
fprintf('b = %g',b)
x = new_loc(a,1); % [x y]
y = new_loc(a,2);
w = new_loc(b,1); % [w z]
z = new_loc(b,2);
这可能吗?或者我是否必须将特征的私有方法公开?如果无法做到这一点,背后的原因是什么呢?
此外,快速无关的问题(我知道,但我省了一个帖子),特质所定义的A和B之间的关系是什么?
答案 0 :(得分:2)
私有方法对于实现者和外部类都是不可见的。因此,不,您不能覆盖私有方法。出于同样的原因,您也不能拥有抽象的私有方法。
@ trait Lol {
private val a: Int
}
cmd0.sc:2: abstract member may not have private modifier
private val a: Int
^
Compilation Failed
另一方面,受保护的方法对于实现者是可见的,但对于外部类是不可见的。可以覆盖受保护的方法。