import java.util.Scanner;
class Average {
int math, programming, oop, total;
public void setGrade(int math, int programming, int oop) {
this.math = math;
this.programming = programming;
this.oop = oop;
this.total = (math + programming + oop) / 3;
}
public int getTotal() {
return total;
}
}
class Remark extends Average {
void remark() {
int totalMark = super.getTotal();
if(totalMark >= 75) {
System.out.println("Pass");
}
else {
System.out.println("Fail");
}
}
}
class Course extends Average {
void decideCourse() {
int total = super.getTotal();
System.out.println("Average: " + total);
if(total >= 91 && total <= 100) {
System.out.print("Course Offered: \nBSE, BEED, BSAT");
}
else if(total >= 81 && total <= 90) {
System.out.print("Course Offered: \nBSIT, BSCS, BSBA");
}
else if(total >= 75 && total <= 80) {
System.out.print("Course Offered: \nBSITECH, DAT, BSHRM");
}
else if(total < 75) {
System.out.print("Average did!");
}
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int math, programming, oop;
System.out.print("Enter Grade: ");
System.out.print("\nMath: ");
math = sc.nextInt();
System.out.print("Programming: ");
programming = sc.nextInt();
System.out.print("Object-Oriented Programming: ");
oop = sc.nextInt();
Course c1 = new Course();
Remark r1 = new Remark();
c1.setGrade(math, programming, oop);
r1.remark();
c1.decideCourse();
}
}
这个问题与继承有关。学生需要根据平均分数评分。在这个代码类中,注释不是扩展平均类,当我试图从平均类中获取总数时,它不是继承。。这里有什么错误。。。其他部件工作正常
每个备注(包括r1
)和每个课程(包括c1
)都有您平均定义的所有字段的副本。并非存在一份平均值的共享副本;Average的每个实例都有一个,Remark和Course的每个实例都包含Average所有字段的空间。
无论输入什么值,r1。备注()。虽然
r1
将从Average继承getTotal
的定义,但您尚未设置值,因此它们都将具有默认值0,因此getTotal
将返回0。
(旁注:虽然它从技术角度来看是有效的,但你可能不会看到类似“备注”和“课程”这样的课程扩展了类似“平均分”的课程的情况:你表示如果你的课程的其他部分需要平均分,你可以通过备注或课程,但这并不像(例如)你有课程那样有意义,作业和考试都扩展了可分级项目。您将看到该原理被称为Liskov替换原理。)
问题内容: 我一直在使用Guice的AOP来拦截一些方法调用。我的课程实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使使用继承的注释对注释类型进行注释,实现类也不会继承Inherited的java doc中所述的注释: 还要注意,此元注释仅使注释从超类继承;已实现的接口上的注释无效。 这可能是什么原因?了解对象的类在运行时确实实现的所有接口并不是一件容易的事,因此在此决定背
类继承是一个类扩展另一个类的一种方式。 因此,我们可以在现有功能之上创建新功能。 “extends” 关键字 假设我们有 class Animal: class Animal { constructor(name) { this.speed = 0; this.name = name; } run(speed) { this.speed = speed;
问题内容: 我可以以某种方式在抽象类上对一组注释进行分组,并且扩展该类的每个类都已自动分配了这些注释? 至少以下情况不起作用: 问题答案: 答案是不 除非注释类型具有@Inherited元注释,否则不会继承Java注释:https : //docs.oracle.com/javase/7/docs/api/java/lang/annotation/Inherited.html。 Spring的注释
我能以某种方式将一组注释分组到一个抽象类上,并且每个扩展该类的类都自动分配了这些注释吗? 至少以下内容不起作用:
问题内容: 我一直在看该类的源代码。对我来说,这似乎是一个普通的抽象类,带有受保护的构造函数。它不是最终的,它内部没有任何特殊的注释,并且不使用本机代码。但是,它不能直接子类化。实际上,以下代码无法编译: 我知道这是Java中的一个特殊类,并且我知道有充分的理由应禁止直接子类化。但是从技术上讲,您如何执行此行为?程序员是否可以创建类似的非最终类,尽管具有可访问的构造函数,该类仍不允许直接子类化?
问题内容: 众所周知,有多种原因(请参阅第一个答案)。为什么只有一个例外涵盖所有这些情况,而不是多个继承自的细粒度情况? 问题答案: 我期望如此,因为发生这种情况时,您实际上什么也做不了:为何耗尽资源几乎无关紧要,因为无论如何您都被搞砸了。也许附加信息会很好,但是… 我知道tomcat会尝试执行“内存不足降落伞”操作,在此过程中,它们会保留一块内存并尝试释放它,但是我不确定它的工作原理。