假设我有一堂课
class Item {
public function __construct($id) {
if(!empty($id)) {
$this->doSomethingWithID($id);
}
}
public function dummyMethod() {
//does Something.
}
protected function doSomethingWithID($id) {
//Does something with the ID
}
}
如果我有这样一个继承的类:
class Product
我现在正准备面试,有一个问题让我很困惑。人们说,在java构造函数中不能继承,但是这样的代码
public class childclass extends parentclass{
public childclass(){
super();
System.out.println("child");
}
public static void main(String[] args) {
childclass cc = new childclass();
}}
super()不意味着子类继承了父类的构造函数吗?
这件事要么讨论一下,要么我太愚蠢了。关于C#没有MI的原因,有很多类似的帖子,我经历过的最多。但我很好奇C#是否已经在隐式地支持它。
因为.NET中的每个类型都是从System.Object派生的,所以我可以像这样编写一个类
Person : object { }
现在如果我有
Employee : Person { }
是不是真的
Employee : object, Person { }
1) Employee类不是已经继承了两个类吗?
这里也存在多重继承的所有问题,对吧?假设我有这个:
Person : object
{
new public Type GetType()
我一直在阅读基础良好的Rubyist,它提到了一个类如何继承其超类的实例方法,以便该类的对象能够调用这些实例方法。下面是一个例子:
class C
def run_instance_method
puts "This is an instance method."
end
def C.run_class_method
puts "This is a class method."
end
end
class D < C
end
根据我所读到的内容,人们总是说类D将只继承类C的实例方法(在这种情况下,D不会继承C::run_c
我有一个关于使用init的实践的问题。如果我有一个具有多个子类的父类,并且它们在init函数中都有相同的内容,那么最好将该内容放在父init类中,然后简单地这样做:
public function init(){
parent::init();
}
这似乎是合乎逻辑的,但我读到的每一个地方,不幸的是zend特定的,他们说把父类中的init方法留空以避免复杂性。
有人能澄清一下吗?
让我们来看看这个类的构造:
class A
{
public static function aa() { }
}
class B extends A
{
public static function bb() { }
}
这里,B:bb();和A:aa();是有效的。但是为什么B:aa();还能工作呢?这不是意味着我直接调用B的aa方法吗?为什么继承和重写在这里起作用?
如果我有下面的类:
class foo {
function __construct() {
// Some code
}
}
然后使用继承来创建:
class bar extends foo {
// Some code
}
当我实例化'bar‘类时,它会自动执行'foo’中的__construct方法吗?或者我需要做一些其他的事情才能让该方法执行?
使用Django,我习惯于使用超级在泛型视图中重写方法:
class MyClass(SomeGenericView):
def method_to_override(self, request, *args, **kwargs):
# do something extra here
return super(MyClass, self).method_to_override(request, *args, **kwargs)
我注意到pydev自动完成了从父类调用方法的过程:
class MyClass(SomeGenericView):
我正在开始一个新的项目,我不确定什么是最好的/正确的为什么让父母的方法?
为什么要这样做?
class ControllerForum extends ControllerAbstract
{
public function __construct()
{
parent::__construct();
}
public function actionViewThread($threadName, (int) $threadId)
{
$threadModel = $this->getModel('Model
实际上,我不知道这是不是一个愚蠢的问题,但由于我的好奇心,我提出了我的1个问题。我有两个问题
1)我在YouTube上看到了一段关于抽象类的视频
在视频中,他正在使用Class Obj=new Class Obj();创建类对象,我的问题是为什么他不使用AbstractClass Obj=new Child Class();两者之间有什么区别吗?我的意思是父对象=新的子类();与AbstractClass obj=new ChildClass();?
2)我的第二个问题是,我读了一个堆栈溢出问题。在回答的人中说了一些关于视图状态(........ and ViewState is left u
我仍然在两个方法中有相同的代码,当我单击相应的按钮时,代码会执行(包括finish()),但当我从代码中调用其他方法时,它不会。有人能解释一下原因吗?如何在没有按钮的onClick的情况下执行此代码
@Override
public void onClick(View view) {
Intent data = new Intent();
data.putExtra("name", "Adnan");
setResult(2, data);
finish();
}
public void qoIntentin(){
I
SquareGeo,TriangleGeo是从Geo类驱动的。
每个SquareGeo、TriangleGeo类都有具有相同参数但内容不同的drawMe方法。
我想在基类is Geo中调用drawMe,但是issue Navigator给我一个警告:
"Instance method '-drawMe' not found (return type defaults to 'id')"
总结:
如何从仅定义了其所有子类的父类调用方法。
我应该避免警告吗?我应该使用协议吗?看起来像这样:
[sub drawMe]; //not super
有什么想
在PHP的最新版本(5.6以下)中,以下是一个无效程序
error_reporting(E_ALL);
class A
{
public function hello(X $one, Y $two)
{
}
}
class B extends A
{
public function hello()
{
}
}
interface X
{
}
interface Y
{
}
$b = new B;
PHP将拒绝运行此命令,而是显示如下所示的错误消息
PHP Strict standards: Declaration of B::hello
我知道在stackoverflow中有很多文章/问题描述了Java中的向上转换和向下转换。我知道什么是向上和向下。但我的问题并不具体到这一点。
向上转换-从子对象到父对象的转换-编译器负责处理。不需要强制转换
向下转换-从父级到子级的转换-需要显式转换
public class Animal {
public void getAnimalName(){
System.out.println("Parent Animal");
}
}
public class Dog extends Animal{
public void getDog
我正在创建一个网站,但为了提高我的编码技能,我试图利用OOP的功能。
我使用类来验证表单输入,因此我认为应该有一个“父”验证类,然后为每个提交的表单(即登录类、注册类等)创建子类,负责将正确的值放入数据库等。
我看到的代码是从子构造函数构造父函数的。然而,我还没有这样做,但我的课似乎无论如何都在工作?
有人能解释一下为什么我们从孩子那里调用父构造函数吗?另外,我的代码是否只是因为我的父程序中有“公共”函数(方法)才能工作呢?(这是一个潜在的问题吗)?
我的代码(为清晰起见的简化版本)如下:
class Validation_Class
{
public function __construc
ActiveRecord似乎对实例方法的定义与attr_accessor不同。
attr_accessor似乎没有为我新定义的属性定义超级方法:
class SomeClass
attr_accessor :some_attribute
def some_attribute
super
end
end
>> some_class = SomeClass.new
>> some_class.some_attribute
NoMethodError: super: no superclass method `some_attribute' f
假设我有一个父亲类要被孩子类继承,后来我想在不修改原有的父亲类的情况下添加更多的东西到父亲类中,请教我怎么做。
让我澄清一下我的问题。父亲中的任何贵重物品和方法都会自动被所有的孩子类访问,对吗?例如:
public class Father
{
public int a;
public int b;
public int c()
{
return a+b;
}
}
public class Child : Father
{
private int d=a*b+c();
}
现在我想向父亲添加一个布尔值e和一个方法f(),这样我的
我知道有很多类似的问题都有很多很好的答案。我试着看看经典的继承方法,或者那些闭包方法等等。不知何故,我认为它们对我来说或多或少是"hack“方法,因为它并不是javascript设计的真正目的。(如果我错了,欢迎任何人纠正我)。好吧,只要它能工作,我就会对经典的继承模式感到满意,比如:
PARENTClass = function (basevar) { do something here; };
PARENTClass.prototype = { a: b, c: d}; // prototype is auto gen
// Inheritance goes here
CHIL