爱摔跤的小男孩
2018-09-22 21:50
package com.shape;
public class Rcerangle extends Shape {
public double higher = 5;
public double longer = 4;
@Override
public void primeter() {
// TODO Auto-generated method stub
double primeter = 2*(higher+longer);
System.out.println("该矩形的周长为:" + primeter);
}
@Override
public void acreage() {
// TODO Auto-generated method stub
double acreage = higher * longer;
System.out.println("该矩形的面积为:" + acreage);
}
}
package com.shape;
//import java.util.Scanner;;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape obj1 = new Rcerangle();
Rcerangle si = new Rcerangle();
//Scanner input = new Scanner(System.in);
//System.out.println(obj.longer=input.nextDouble());
//System.out.println(obj.higher=input.nextDouble());
si.longer = 7;
obj1.primeter();
obj1.acreage();
Shape obj2 = new Cirlce();
obj2.primeter();
obj2.acreage();
}
该矩形的周长为:18.0
该矩形的面积为:20.0
该圆形的周长为:25.12
该圆形的面积为:50.24
package obtest;
public class Circle extends Shape {
int R;
double pi = 3.14;
@Override
public void perimeter() {
// TODO Auto-generated method stub
double preimeter;
preimeter = this.R*pi*2;
System.out.println("这个矩形的面积:"+preimeter);
}
@Override
public void acreage() {
// TODO Auto-generated method stub
double acreage;
acreage = (this.R+this.R)*pi;
System.out.println("这个矩形的面积:"+acreage);
}
}
应该是你创建的si和obj1都是分开的内存段,你si引用对象赋值跟Obj1没有关系,,你用Obj1赋值再执行操作就可以了
对象用错了,应该是si.primeter(); si.acreage();就对了,你那种引用是不对的,直接Rcerangle si = new Rcerangle();就ok了
你在子类的函数中,没有使用对象的属性,只是在子类的函数里用higher * longer是不行的,应该用this.higher吧,不然这个只是个普通变量,而不是你的obj1对象的一个属性
Java入门第二季 升级版
530553 学习 · 6091 问题
相似问题