再次免责声明仍然在学习C#和OOP一般,所以我希望你能耐心陪我:)
我目前正在使用一个CMS,它有一个叫做类的类FileVersion,它基本上包含一个与文件有关的属性列表,如文件名,文件类型,字节大小,id,上传日期,is-latest-version等.
FileVersions 的列表包含在File其中具有自己的唯一ID的列表中.如果要从CMS下载特定文件,则使用以下内容构建URL:
string URL = "/files/"+file.id.toString()+"/"+file.fileVersion.Last().filename;
Run Code Online (Sandbox Code Playgroud)
现在,对于我正在处理的特定控件(专门处理文档文件),能够将URL与所有其他FileVersion信息一起存储以供以后使用是有意义的.所以我决定创建自己的类DocumentVersion,其中包含扩展FileVersion.这就是它的样子:
public partial class DocumentVersion : FileVersion
{
public DocumentVersion() : base() { }
public string link;
}
Run Code Online (Sandbox Code Playgroud)
现在我应该注意,似乎我不需要在这里实现一个接口 - 但是不要把它作为福音,这就是为什么我在这里.
但是,当我试图像我这样投下我FileVersion的DocumentVersion时候:
DocumentVersion dv = ((DocumentVersion)fileversion);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
无法将"Foo.CMS.FileVersion"类型的对象强制转换为"CoA.DocumentVersion".
我的想法是因为我试图在一个不同的命名空间中扩展一个类,而不是原来所在的,但就像我说的那样,OOP对我来说相对较新,所以我可能错了.
在此先感谢您的帮助.这个社区非常有价值!我只希望一旦我更熟练,我可以回馈:).
我试图扩展我的公司特定的BaseClass(Acme :: BaseClass),但每当我:
package Manager;
use strict;
use warnings;
use base qw(Acme::BaseClass)
sub new { ...
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
Base class package "Acme::BaseClass" is empty.
Run Code Online (Sandbox Code Playgroud)
但在我的脚本中,我可以使用该包:
use Acme::BaseClass;
my $bc = BaseClass->new("myname");
$bc->prnt(); # prints "myname"
exit;
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试在Perl中继承,所以也许我错过了一些基本的东西?
笔记:
我试着用旧学校:
BEGIN {require Acme :: BaseClass; 推@ISA,qw(Acme :: BaseClass); }
我不确定如何正确地做这些.希望这是我想念的简单事情.如果没人能回答,我会添加更多细节.
我不确定如何提出这个问题.基本上我试图让我的视图对象从Smarty对象扩展出来.然后,我希望能够将视图对象扩展到我的控制器对象.
View对象将为我的所有控制器分配我想要的模板变量.
我知道我现在有什么问题,但如果有人能指出我正确的方向,那将是非常棒的.我尽力说出最好的话.
<?php
defined('SITE_ROOT') ? null : define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT'].'/mvcsandbox');
require_once('Smarty/Smarty.class.php');
class View extends Smarty {
public static $instance=NULL;
public static function getInstance(){
if ( self::$instance === null ){
self::$instance = new self();
}
return self::$instance;
}
public function __construct() {
$this->template_dir = SITE_ROOT.'/Library/tmp/';
$this->compile_dir = SITE_ROOT.'/Library/tmp/';
$this->config_dir = SITE_ROOT.'/Library/tmp/';
$this->cache_dir = SITE_ROOT.'/Library/tmp/';
$this->assign("var1", "This is from the view class");
}
public static function output() {
self::display('test.tpl');
}
}
class Controller1 extends View {
public function init() {
$this->assign("var2", "This …Run Code Online (Sandbox Code Playgroud) 我想用一组预定义的有效键来实现两个不同的词典.另外,一个字典包含另一个字典.
class Otherdict (dict):
_keys = ['A','B']
def __init__(self):
for key in self._keys:
self[key] = None
def populateDict(self):
self['B'] = 10
self['A'] = 12
class MyDict(dict):
_keys = ['R','ED']
def __init__(self):
for key in self._keys:
self[key] = None
def __getitem__(self, key):
if key not in self._keys:
raise Exception("'" + key + "'" + " is not a valid key")
dict.__getitem__(self,key)
def __setitem__(self, key, value):
if key not in self._keys:
raise Exception("'" + key + "'" + " is not a …Run Code Online (Sandbox Code Playgroud) 我有一个泛型类"SimpleList"(摘录):
public abstract class SimpleList<T> {
protected List<T> list;
public SimpleList(List<T> list) {
this.list = list;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个扩展它的类"TrackList"(摘录):
public class TrackList extends SimpleList {
public TrackList(List<XmlTrack> list) {
super(list);
}
}
Run Code Online (Sandbox Code Playgroud)
在"TrackList"中,我指定该列表用于保存"XmlTrack"类型的对象.但是,似乎无法从该列表中获取对象并访问其方法.例如,这不起作用:
list.get(0).someMethodSpecificToXmlTrack()
我不明白为什么这不起作用?"SimpleList"中的列表是否设置为仅保存"XmlTrack"?
我一直在摆弄这个问题已经有一段时间了,我正处于挫折之中.我正在使用MY_Controller扩展控制器类.
以下是详细信息:
__construct() 似乎没有被称为.MY_设置为扩展的前缀(我有其他扩展工作正常)这是我的代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
echo 'TESTING!!!'; // This should print, followed by an ob_start() error
}
}
Run Code Online (Sandbox Code Playgroud)
我应该得到一个页面,TESTING!!!后面跟着一个ob_start()错误,但是页面正常渲染.
我试过拆分构造函数类并只调用MY_Controller中的私有函数,但这不起作用.我知道正在调用该文件,因为如果我故意在MY_Controller.php中创建一个php错误,该页面将会出错.在我看来,它__construct()只是没有运行.
延伸到JFrame和有区别javax.swing.JFrame吗?
例:
public class Authenticator extends JFrame {
Run Code Online (Sandbox Code Playgroud)
和...
public class Authenticator extends javax.swing.JFrame {
Run Code Online (Sandbox Code Playgroud) 这个问题是关于Dart语言的.我想要一个只是List但具有一些额外功能的类.
例如,我有一个名为Model的类:
class Model{
String name;
int type;
Model(this.name, this.type);
}
Run Code Online (Sandbox Code Playgroud)
我知道Model的类型只能取四个值:从0到3.我希望有一个方法,它可以给我一个指定类型的模型列表,例如List<Model> modelCollection.getByType(int type);.我打算在该类中有四个"隐藏"模型列表(按类型分组).因此,我需要覆盖List元素的添加和删除,以使隐藏列表保持最新.
我怎样才能尽可能简单地实现这一点?
PS我知道这很简单,但我对Object继承不太熟悉并且找不到合适的例子.PPS我也检查了这个,但不知道它是否过时,并没有抓住这个想法.
在python中,我可以执行以下操作:
n = 8
a = []
a += [1]*n
Run Code Online (Sandbox Code Playgroud)
如何在java中使用ArrayLists执行等效操作(不使用for循环..)?
List<T> list = new ArrayList<T>();
list.add(1);
list.add(2);
list.add(3);
// Some construct that is equivalent to a += [1]*n
Run Code Online (Sandbox Code Playgroud) 我有一个接口(来自另一个我无法直接修改的框架),如下所示:
public interface IUserDemo
{
string UserName { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想'扩展'这个界面,所以它看起来如下:
public interface IUserDemo
{
string UserName { get; }
string Password { get; }
}
Run Code Online (Sandbox Code Playgroud)
希望解决方案允许我执行以下操作:
UserDemo demouser = new UserDemo();
return new UserDemo
{
UserName = userName,
Password = password
};
Run Code Online (Sandbox Code Playgroud)
UserDemo的外观如下:
public class UserDemo : IUserDemo
{
public string UserName { get; set; }
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够朝着正确的方向推动我,这将是伟大的!
extend ×10
class ×3
java ×3
c# ×2
list ×2
php ×2
python ×2
.net ×1
arraylist ×1
casting ×1
codeigniter ×1
constructor ×1
dart ×1
dictionary ×1
generics ×1
inheritance ×1
interface ×1
jframe ×1
perl ×1
perl-module ×1
smarty ×1
swing ×1