1231 // JLS 8.4.6.1 |
1231 // JLS 8.4.6.1 |
1232 switch ((int)(flags_field & Flags.AccessFlags)) { |
1232 switch ((int)(flags_field & Flags.AccessFlags)) { |
1233 case Flags.PRIVATE: |
1233 case Flags.PRIVATE: |
1234 return false; |
1234 return false; |
1235 case Flags.PUBLIC: |
1235 case Flags.PUBLIC: |
1236 return true; |
1236 return !this.owner.isInterface() || |
|
1237 (flags_field & STATIC) == 0; |
1237 case Flags.PROTECTED: |
1238 case Flags.PROTECTED: |
1238 return (origin.flags() & INTERFACE) == 0; |
1239 return (origin.flags() & INTERFACE) == 0; |
1239 case 0: |
1240 case 0: |
1240 // for package private: can only override in the same |
1241 // for package private: can only override in the same |
1241 // package |
1242 // package |
1242 return |
1243 return |
1243 this.packge() == origin.packge() && |
1244 this.packge() == origin.packge() && |
1244 (origin.flags() & INTERFACE) == 0; |
1245 (origin.flags() & INTERFACE) == 0; |
1245 default: |
1246 default: |
1246 return false; |
1247 return false; |
|
1248 } |
|
1249 } |
|
1250 |
|
1251 @Override |
|
1252 public boolean isInheritedIn(Symbol clazz, Types types) { |
|
1253 switch ((int)(flags_field & Flags.AccessFlags)) { |
|
1254 case PUBLIC: |
|
1255 return !this.owner.isInterface() || |
|
1256 clazz == owner || |
|
1257 (flags_field & STATIC) == 0; |
|
1258 default: |
|
1259 return super.isInheritedIn(clazz, types); |
1247 } |
1260 } |
1248 } |
1261 } |
1249 |
1262 |
1250 /** The implementation of this (abstract) symbol in class origin; |
1263 /** The implementation of this (abstract) symbol in class origin; |
1251 * null if none exists. Synthetic methods are not considered |
1264 * null if none exists. Synthetic methods are not considered |