所以我有两个班:Property
和Houses
.Property
是抽象的超类,Houses
是它的子类.
这是代码 Property
public abstract class Property{
String pCode;
double value;
int year;
public Property(String pCode, double value , int year){
this.pCode = pCode;
this.value = value;
this.year = year;
}
public Property(){
pCode = "";
value = 0;
year = 0;
}
public abstract void depreciation();
//Accessors
private String getCode(){
return pCode;
}
private double getValue(){
return value;
}
private int getYear(){
return year;
}
//Mutators
private void setCode(String newCode){
this.pCode …
Run Code Online (Sandbox Code Playgroud) 我在这里找到了与我的问题类似的链接,但我似乎仍然无法理解某些内容。
public abstract class ClassA
{
protected abstract void Method()
{
//some logic here
}
}
public class ClassB : ClassA
{
protected override void Method()
{
base.Method();
// some custom logic here
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的情况,我似乎无法找出为什么我无法base.Method()
从 ClassB 中的重写方法调用。错误说:“无法调用抽象基方法”。如果我不能调用它,为什么用逻辑填充和抽象基方法的功能甚至在那里?请有人向我解释我犯了什么错误,我该如何解决?
我有1个问题,我无法打开我的方法,我不好低垂.我有3个类,1个是抽象的.
public abstract class Canideos {
public abstract String ladrar();
}
public class Gato extends Canideos{
@Override
public String ladrar() {
String ladrar="miau miau";
return ladrar;
}
public String miar(){
String mi="miau a miau";
return mi;
}
}
Run Code Online (Sandbox Code Playgroud)
我的动力是这样的:
Canideos cani[]= {new Cao(), new Gato()}; // it works :)
for(int i=0;i<2;i++){
System.out.println(cani[i].ladrar());
}
String a;
Run Code Online (Sandbox Code Playgroud)
我的问题是这样的:/
a = (String) cani[1].Gato().miar();
a = cani[1].miar();
Run Code Online (Sandbox Code Playgroud)
我无法打开方法miar()Gato类.
我有一个抽象类的两个子类,每个子类实现一个超类的抽象方法.我希望每个都有不同的返回类型,尽管这些返回类型又是不同抽象类的子类.见下文:
public abstract class Gardener {
public abstract ArrayList<Flower> getFlowers();
}
public class GardererA extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Daisy>();
}
}
public class GardererB extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Rose>();
}
}
public abstract class Flower {}
public class Daisy extends Flower {}
public class Rose extends Flower {}
Run Code Online (Sandbox Code Playgroud)
显然Java不会让我这样做,但我对如何获得这个功能感到茫然.有任何想法吗?
LocalDateTime是抽象类.所以我写不出来:
LocalDateTime value = new LocalDateTime(); //error
Run Code Online (Sandbox Code Playgroud)
如果我想得到它的实例,我必须写:
LocalDateTime value = LocalDateTime.now(); //not error
Run Code Online (Sandbox Code Playgroud)
我有一个问题,为什么LocalDateTime可以返回实例?这是一个抽象类.
我看到了概述,但我找不到它......
这个问题专门针对Android
和使用Activity
可以由所有其他活动扩展的基础。总的来说,我了解 Java 的使用和功能abstract classes
。我的情况是,我有一个基本活动,其中包含一些常用常量、函数并实现了一些Interfaces
. 我的问题是应该这样abstract
还是我可以让它保持正常Activity
。是否有特定的原因abstract
。
//Standard BaseActivity
public abstract class BaseActivity extends Activity {
//common code
}
//Usage
public class MyActivity extends BaseActivity {
}
Run Code Online (Sandbox Code Playgroud)
如果我将 BaseActivity 定义如下,这似乎也有效
//Non Abstract Class
public class BaseActivity extends Activity {
}
Run Code Online (Sandbox Code Playgroud)
因此,问题是否有使用抽象的特定原因。在这两种情况下,我都没有在 Manifest 中定义 BaseActivity。
我知道这有效:
class Main{
public static void main(String[]args){
AbstractClass object = new AbstractClass(){ ... };
}
}
Run Code Online (Sandbox Code Playgroud)
它创建了一个隐式扩展AbstractClass
类的对象(很明显abstract
).
但是下面的工作也会这样吗?
class Main{
public static void main(String[]args){
ConcreteClass object = new ConcreteClass (){ ... };
}
}
Run Code Online (Sandbox Code Playgroud)
ConcreteClass是一个不是的类abstract
.
当前正在研究由可调整大小的数组控制的堆栈的实现。尝试实例化的新对象会ResizableArrayStack
产生错误。
不允许抽象类类型为“ csc232 :: ResizableArrayStack”的E0322对象:ResizableArrayStack.cpp 107 函数“ csc232 :: ResizableArrayStack :: isEmpty [with ItemType = int]”是一个纯虚函数 函数“ csc232 :: ResizableArrayStack :: push [with ItemType = int]”是一个纯虚函数 函数“ csc232 :: ResizableArrayStack :: pop [with ItemType = int]”是一个纯虚函数 函数“ csc232 :: ResizableArrayStack :: peek [with ItemType = int]”是一个纯虚函数
StackInterface.h
#include "pch.h"
#pragma once
#ifndef CSC232_HW05_RESIZABLE_ARRAY_STACK_STACK_INTERFACE_H
#define CSC232_HW05_RESIZABLE_ARRAY_STACK_STACK_INTERFACE_H
namespace csc232 {
template<typename ItemType>
class StackInterface {
public:
/**
* Sees whether the stack is empty.
* @return True if the stack …
Run Code Online (Sandbox Code Playgroud) 界面-
interface Service<T>
{
void foo(T t);
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个实现接口的抽象类Service
。我不想提供T
ie generic的实现。我将在抽象类的另一个子类中进行。
我应该如何声明一个带有泛型的抽象类?
abstract class AbstractService implements Service<T>
Run Code Online (Sandbox Code Playgroud)
用java不酷。
抽象意味着隐藏数据。我不明白抽象方法如何向用户隐藏任何数据。可以提出一个论点,即抽象方法不需要实现,而是在不向用户隐藏任何内容的类层次结构的宏伟方案中。抽象方法似乎只是强制实现,所以我不明白为什么它们是抽象的。
我将如何在C++中执行以下操作(以下代码是C#):
class Base
{
public virtual void Foo()
{
// do stuff...
}
}
class C : Base
{
public override void Foo()
{
base.Foo(); // <=== how do you do this line?
}
}
Run Code Online (Sandbox Code Playgroud) 我试图为10名运动员的"运动"抽象课程实例化对象,其中包括每个运动员的名字和年龄,然后有两个派生类别用于"网球"运动员和一个用于"高尔夫"运动员.
class Program
{
static void Main(string[] args)
{
Sport[] athlete = new Sport[10];
athlete[0] = new Tennis("John Smith", 18, "Tennis", 5.0, 92);
athlete[1] = new Tennis("Lisa Townsend", 15, "Tennis");
athlete[2] = new Tennis("Brian Mills", 17, "Tennis", 4.0, 83);
athlete[3] = new Golf("Stacey Bell", 16, "Golf", 10, 20);
athlete[4] = new Golf("Tom Spehr", 18, "Golf", 9, 12);
athlete[5] = new Golf("Sam Calen", 14, "Golf");
athlete[6] = new Tennis("Karen Strong", 17, "Tennis", 3.0, 78);
athlete[7] = new Golf("Ken Able", 15, "Golf", …
Run Code Online (Sandbox Code Playgroud)