标签: class

从实际类中具有相同名称的抽象类中的另一个方法调用方法

我有一个抽象类和一个扩展它的类,我在这两个类中都有一个同名的方法.我想在抽象类的另一个方法中调用抽象类中的方法.

Controller.java

public abstract class Controller {

    public Result delete(Long id) {
        return this.delete(id, true);
    }
    public Result delete(Long id, boolean useTransaction) {
        // do something and return result
    }
}
Run Code Online (Sandbox Code Playgroud)

FileGroup.java

public class FileGroup extends Controller {

    public Result delete(Long id, boolean central) {
        // do something
        return super.delete(id);
    }
}
Run Code Online (Sandbox Code Playgroud)

super.delete调用Controller.deletethis.delete(id, true)调用deleteFileGroup,而不是调用deleteController,这是造成递归无限循环和堆栈溢出.

java abstract-class class superclass

11
推荐指数
1
解决办法
1256
查看次数

如何在swift中列出类的所有变量

有没有办法在Swift中列出类的所有变量?

例如:

class foo {
   var a:Int? = 1
   var b:String? = "John"
}
Run Code Online (Sandbox Code Playgroud)

我想这样列出: [a:1, b:"John"]

variables class swift

11
推荐指数
2
解决办法
8823
查看次数

关于如何在JavaScript中创建类的困惑

过去在JavaScript中创建"类"时,我这样做了:

function Dog(name){
    this.name=name;
    this.sound = function(){
        return "Wuf";
    };
}
Run Code Online (Sandbox Code Playgroud)

但是,我只是看到有人这样做:

var Dog = (function () {
    function Dog(name) {
        this.name = name;
    }
    Dog.prototype.sound = function () {
        return "Wuf";
    };
    return Dog;
})();
Run Code Online (Sandbox Code Playgroud)

你可以两种方式做到,还是我做错了?在那种情况下,为什么?那两者在我们最终的结果方面究竟有什么区别?在这两种情况下,我们都可以创建一个对象:

var fido = new Dog("Fido");
fido.sound();
Run Code Online (Sandbox Code Playgroud)

我希望有人能开导我.

javascript class

11
推荐指数
1
解决办法
207
查看次数

Python类:继承与实例化

我正在创建一个使用Frame()作为基类的GUIclass.

在我的GUIclass的init方法中,我想创建一个Frame小部件

现在我有:

class GUIclass(Frame):
    def __init__(self, parent):
        frame = Frame(self, parent)   
Run Code Online (Sandbox Code Playgroud)

但我在其他地方见过第三行:

Frame.__init__(self, parent)   
Run Code Online (Sandbox Code Playgroud)

我是编程,python和绝对继承的新手,我想知道我是否正确理解了两者之间的区别.我承诺,我做了大量的研究和阅读,但我找不到任何能让它完全清楚的东西:

在第一种情况下,我没有调用init方法,因为我创建了一个Frame对象(frame),当创建一个对象时,它的init方法被python隐式调用.

在第二个场景中,一个是在类上调用init方法(我认为这是完全合法的?)因为没有创建Frame对象,因此不会自动执行.

是对的吗?

我也看到了:

frame = Frame.__init__(self, parent)   
Run Code Online (Sandbox Code Playgroud)

这真的让我失望了.这只是某人做了多余的事情还是有理由这样做?

感谢您的帮助,我想暂时放慢速度并确保我完全理解我编写的任何代码行,而不是编写和运行我理解的整个程序.

python class tkinter

11
推荐指数
1
解决办法
855
查看次数

装饰类或参数意味着什么?

装饰类或参数意味着什么?
我的目的是什么,我什么时候会这样做?

欢迎链接到资源和直接答案.

谢谢.

c# parameters class

11
推荐指数
2
解决办法
1万
查看次数

合并重叠间隔

问题:给定任意顺序的一组时间间隔,将所有重叠间隔合并为一,并输出应该只具有互斥间隔的结果.为简单起见,将间隔表示为整数对.例如,让给定的一组区间为{{1,3},{2,4},{5,7},{6,8}}.区间{1,3}和{2,4}彼此重叠,因此它们应合并成{1,4}.类似地,{5,7}和{6,8}应该合并并成为{5,8}

编写一个函数,为给定的一组区间产生一组合并区间.

我的代码:

import java.util.*;
import java.lang.*;
import java.io.*;

class Interval 
{
    int start;
    int end;

    Interval() {
        start = 0;
        end = 0;
    }

    Interval(int s, int e) 
    {
        start = s;
        end = e;
    }
}

class Ideone
{
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {

        if(intervals.size() == 0)
            return intervals;
        if(intervals.size() == 1)
            return intervals;

        Collections.sort(intervals, new IntervalComparator());

        Interval first = intervals.get(0);
        int start = first.start;
        int end = first.end;

        ArrayList<Interval> result = new ArrayList<Interval>();

        for(int i = 1; …
Run Code Online (Sandbox Code Playgroud)

java arrays merge compiler-errors class

11
推荐指数
1
解决办法
1万
查看次数

Java内部和嵌套类

我已经开始准备自己参加OCJP7考试,我发现这一章看起来很复杂.

假设我有这段代码:

class Outer1{
    interface InnerInterface{
        String x = "test";
    }
    class InnerClass{
        String x = "test";
    }
}
class Outer2{
    static interface NestedInterface{
        String x = "test";
    }
    static class NestedClass{
        String x = "test";
    }
}
class Main{
    public static void main(String [] args){
        String s1 = Outer1.InnerInterface.x;
        String s2 = new Outer1().new InnerClass().x;
        String s3 = Outer2.NestedInterface.x;
        String s4 = new Outer2.NestedClass().x;
    }
}
Run Code Online (Sandbox Code Playgroud)

你能告诉我,为什么我们可以访问Outer1.InnerInterface.x,并Outer2.NestedInterface.x以同样的方式?内部接口默认是静态的?我正试图建立一些联系,以使它们更清晰.

java class

11
推荐指数
2
解决办法
519
查看次数

检查变量是否属于python中的类

我有一个小班,如下:

class Gender(object):
    MALE = 'M'
    FEMALE = 'F'
Run Code Online (Sandbox Code Playgroud)

我有一个参数变量,只能是MF.为了确保它只是那个,我做以下事情:

>>> parameter = 'M'
>>> if parameter not in (Gender.MALE, Gender.FEMALE)
...     print "Invalid parameter"
...
Invalid parameter
>>>
Run Code Online (Sandbox Code Playgroud)

现在我有一个包含美国所有州的课程如下:

class States(object):
    ALABAMA = 'AL'
    ALASKA = 'AK'
    ARIZONA = 'AZ'
    ARKANSAS = 'AR'
    CALIFORNIA = 'CA'
    COLORADO = 'CO'
    CONNECTICUT = 'CT'
    DELAWARE = 'DE'
    DISTRICTOFCOLUMBIA = 'DC'
    ....
....
Run Code Online (Sandbox Code Playgroud)

就像上面的例子一样,我的参数现在是AL.但是,由于美国有50个状态,我实际上不能使用像我上面使用的50个变量的元组.有更好的方法吗?我确实读过关于isinstance的内容,但它没有给我预期的结果.

python class instance

11
推荐指数
3
解决办法
3798
查看次数

纯抽象类可以包含静态常量,静态方法还是非虚拟析构函数?

这是一个纯粹的抽象类吗?

class C
{
public:
    static const std::string S;
    C() {}
    virtual ~C() {}
    virtual void v() = 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为不是,遵循这个[1]定义.

纯Abstract类只有抽象成员函数,没有数据或具体成员函数.

它不能是纯抽象的,因为它不只有抽象的成员函数.

  1. 它有一个虚拟析构函数,它是一个成员函数 [3],但不是抽象的.它不是纯粹的析构函数[2].注意"抽象方法"和"纯虚函数"是相同的东西[4].术语"方法"和"功能"也是同义词.
  2. 它有一个属性S,代表数据.

现在我的老师声称这是一个纯粹的抽象类,因为

纯虚拟类中包含的常量不被视为属性.它们是一个阶级的不可变元素,因此它们不违反其抽象性.这同样适用于静态方法.

[1] https://en.wikibooks.org/wiki/C%2B%2B_Programming/Classes/Abstract_Classes

[2] 如果一个类有一个非纯粹的析构函数,它仍然可以是纯抽象的吗?

[3] http://en.cppreference.com/w/cpp/language/destructor

[4] 抽象方法和纯虚函数是一回事吗?

c++ static abstract-class class c++11

11
推荐指数
1
解决办法
1063
查看次数

如何检查ruby中是否定义了私有方法

我能找到的最接近的是在Ruby中,如何检查方法"foo =()"是否已定义?,但只有当方法是公共的时,它才有效,即使在类块内.

我想要的是:

class Foo
  private

  def bar
    "bar"
  end

  magic_private_method_defined_test_method :bar #=> true
end
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

class Foo
  private

  def bar
    "bar"
  end

  respond_to? :bar #=> false
  #this actually calls respond_to on the class, and so respond_to :superclass gives true
  defined? :bar #=> nil
  instance_methods.include?(:bar) #=> false
  methods.include?(:bar) #=> false
  method_defined?(:bar) #=> false
  def bar
    "redefined!"
  end # redefining doesn't cause an error or anything

  public
  def bar
    "redefined publicly!"
  end #causes no error, behaves no differently whether …
Run Code Online (Sandbox Code Playgroud)

ruby class

11
推荐指数
2
解决办法
3694
查看次数