java编写三角形面积代码如下:1
发布网友
发布时间:2023-10-27 11:26
我来回答
共3个回答
热心网友
时间:2024-11-03 12:41
第一个问题,若把 public abstract double getArea() 这句去掉的话,代表了父类里面没有了这个方法!换言之,你的main方法里面,不能用父类的对象去调用这个方法!也就是说,你要这样建立类:SanJiao sanjiao=new SanJiao(2.0,3.0); 把Shape 换成 SanJiao
第二个问题你问的不太清楚,一般写法是 this.x = _x; this.y = _y;
因为我们有时候是这样写的
public SanJiao(double x,double y)
{ this.x=x; this.y=y;
}
两个都是用 x和y,那么,类里面的元素就要用 this来区分开了!因为 this 指的就是当前对象!
热心网友
时间:2024-11-03 12:41
class SanJiao{
private double a;
private double b;
public SanJiao(double a,double b){
setA(a);
setB(b);
}
public void setA(double a)
{
if(a>0)
this.a=a;
}
public void setB(double b){
if(a>0)
this.b=b;
}
public double getA()
{
return this.a;
}
public double getB()
{
return this.b;
}
public double getArea()
{
return a*b/2;
}
}
public class Oo22demo{
public static void main(String[] args){
SanJiao sanjiao=new SanJiao(2.0,3.0);
System.out.println(sanjiao.getArea());
}
}
热心网友
时间:2024-11-03 12:42
去掉Shape里面的抽象方法getArea()后.SanJiao类继承Shape写了getArea()方法,因为Shape里面是没有getArea()方法的(因为去掉了嘛).所以getArea()方法是SanJiao这个类自己的方法.所以想使用getArea()方法必须使用SanJiao这个类的引用,而不能用抽象类Shape的引用了.因此,只需要将One类里面的"Shape sanjiao=new SanJiao(2.0,3.0);"改为"SanJiao sanjiao = new SanJiao(2.0,3.0);"就可以了.
关于第二个问题.既然你是新手,就讲的详细点吧.
java中有个关键字是this.this关键字总是指向调用该方法的对象.就以你写的例子为例:
abstract class Shape {
public double area;
public abstract double getArea();
}
class SanJiao extends Shape {
private double x, y;
public SanJiao(double x, double y) {
this.x = x;
this.y = y;
}
public double getArea() {
area = x * y / 2;
return area;
}
}
public class One {
public static void main(String[] args) {
Shape sanjiao = new SanJiao(2.0, 3.0);
System.out.println(sanjiao.getArea());
}
}
修改后SanJiao类的构造器SanJiao()需要两个double类型的参数,两个参数分别为x,y,但是这两个参数跟SanJiao里面的两个double类型的实例变量xy重了,根据就近原则,构造器SanJiao()里面的xy始终指向他的参数xy,想在构造器SanJiao()中使用类SanJiao的实例变量xy就要使用this关键字来指代了.当年我学习java的时候"this关键字总是指向调用该方法的对象."这句话把我纠结了好长时间.现在我给你具体分析一下.这个例子中类One中,mian()方法new 了一个SanJiao类的对象指向了引用sanjiao.因为SanJiao类只有带2个double参数的构造器,所以必须在new出来的时候使用两个double类型的参数.本例中使用的是2.0,3.0.现在,这两个参数传达到了构造器SanJiao()中,SanJiao()进行了赋值操作,想将这两个参数值赋值给了类SanJiao中的实例变量xy.但是现在不能直接使用xy,因为直接使用xy表示的是SanJiao()中的两个参数.this表示的是调用该方法的对象.现在调用构造器SanJiao()的谁?不就是SanJiao类吗.所以现在this.x的意思不就是SanJiao类里面的那个x嘛.SanJiao()中的this.x=x 就是将x的值给实例变量x了.看到这里,我想你也应该明白.在SanJiao类的getArea()方法中的x,y.也可以使用this.x和this.y代替.不过因为这个方法里面的xy没有和别的xy冲突.所以可以省略不写..