在PHP中,我在子类中定义了一个名为$table_name的属性,然后在父类中,我可以使用以下属性:
class A{
public function getTable(){
return $this->table_name;
}
}
class B extends A{
protected $table_name='admin;
}
这在Java或C++中是可能的吗?我只是想知道这是一个很好的OOP实践,还是在PHP中是可行的,因为PHP是一种解释语言。
更新:我没有意识到这在PHP中是可行的,直到我发现一个MVC框架使用它!当我学习Java时,我不记得任何类似的
首先,请参阅这些Java代码:
Drawable.java
package examples.simple.model;
public interface Drawable {
public void draw();
}
Shape.java
package examples.simple.model;
public abstract class Shape implements Drawable {
private Point center;
public Point getCenter() {
return center;
}
我尝试将Objectify与一组继承自抽象基类的类一起使用:
class Container {
@Id Long id;
@Embedded Set<MyAbstract> children = new HashSet<MyAbstract>();
}
@Entity
abstract class MyAbstract {
@Id Long id;
}
@Subclass class Derived1 extends MyAbstract {}
@Subclass class Derived2 extends MyAbstract {}
你知道如何为
我正在研究静态和动态多态性,并获得了以下链接:
在所有这些链接中,有人说重载是多态性的一个例子,然后我又遇到了另外两个地方,有人说重载与多态性无关,链接是:
Head First Java第二版第7章(继承和多态)最后一个主题:重载方法
。
现在我不能确定它是否是一种多态性,如果不是,在OOPs中有没有什么叫做静态多态性的东西?
我正在尝试使用多态性,但我做错了一些事情;我有以下场景:
class Character : NSNode {
let characterName = "name"
}
class World : NSNode {
let character : NSNode = Character()
// getting error here, NSNode does not have a property "characterName"
character.characterName = "new name"
}
声明字符()类型的变量但引用类
在浏览了一些关于多态的问题之后,似乎Java中的多态性是一种普遍的思想,它允许对象的行为就像它是另一个类的实例一样;因此代码更独立于具体的类。考虑到这个想法,下面的main()方法是否使用了多态的两个方法调用?
abstract class A
{
void f() { System.out.println("A.f()"); }
abstract void g();
}
class B extends A
{
void g() { System.out.println("B.g()"); }
}
public class Test
{
pu
为什么方法重载称为静态或编译时多态性
以Java为样本。
class StaticPolymorphismSample {
void polymorphicMethod(int a) {
}
void polymorphicMethod(int a, int b) {
}
void polymorphicMethod(String a) {
}
void nonPolymorphicMethod(int a) {
}
void nonPolymorphicMethod1(int a) {
}
}
所以我
VarHandle显示以下错误-
Exception in thread "main" java.lang.NoSuchMethodError: VarHandle.compareAndSet(VarHandleExample,int,int)void
at java.base/java.lang.invoke.MethodHandleNatives.newNoSuchMethodErrorOnVarHandle(MethodHandleNatives.java:492)
at java.base/java.lang.invoke.MethodHandleNat