为了账号安全,请及时绑定邮箱和手机立即绑定

有关抽象类的问题

 我想问一下能不能不在父类中给定 半径的值,而是在子类中直接赋值。

package com.imooc.chouxiang;

public class Initail {

public static void main(String[] args) {

// TODO Auto-generated method stub

Shape one=new Rectangle();

one.r=3;

one.question();

}

}


package com.imooc.chouxiang;

public abstract class Shape {

public double r;

public abstract double question();

}





正在回答

3 回答

如果一个父类里面什么都没有给儿子传下去,那这个父类就没有必要存在,你可以直接写一个接口,

但是当父类里面的东西不全的时候 但你又必须得继承,这样你可以用继承然后子类去补全那些你需要的东西。

个人理解

0 回复 有任何疑惑可以回复我~

  我之前也是你这样编写的,但是我发现 public void circumference()  这个方法并不能输出,void 返回值为空,应该用double 返回值吧 再接上return。 也有可能是我之前父类中定义 r , s , l 关键字 弄错了加了 abstract 关键字。 

0 回复 有任何疑惑可以回复我~

可以啊。这是我的代码。。。欢迎指导。。。随便乱写的。。。

package abstract练习题;
//图形类(父类)
public abstract class Shaoe {
	int a,b,r;
	public abstract void circumference();
	public abstract void area();
}

==========分割线===============

package abstract练习题;
//圆形类
public class Circle extends Shaoe {
	int r=10;
	int d=2*r;
	double π=Math.PI;//π值
	double r2=Math.pow(r, 2);//平方 | Math.pow(a,b) 其中a是底数b是指数
	@Override
	public void circumference() {
		// TODO Auto-generated method stub
		System.out.println("圆形周长:"+(d*π));
	}

	@Override
	public void area() {
		// TODO Auto-generated method stub
		System.out.println("圆形的面积:"+(π*r2));
	}

}

==========分割线===============

package abstract练习题;
//矩形类
public class Rectangle extends Shaoe {
	int a=5,b=7;
	@Override
	public void circumference() {
		// TODO Auto-generated method stub
		System.out.println("矩形周长:"+(2*a+2*b));
	}

	@Override
	public void area() {
		// TODO Auto-generated method stub
		System.out.println("矩形面积:"+(a*b));
	}

}

==========分割线===============

package abstract练习题;
/**
 * 现有Shape图形类,用Rectangle矩形和Circle圆形子类,求图形的周长和面积
 * @author 曼陀罗华灬黎
 * 2017年6月2日上午10:51:31
 */
public class Initial {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Rectangle q=new Rectangle();
		Circle w=new Circle();
		q.circumference();
		q.area();
		System.out.println("==========================");
		w.circumference();
		w.area();
	}

}


0 回复 有任何疑惑可以回复我~
#1

非我所依兮 提问者

我之前也是你这样编写的,但是我发现 public void circumference() 这个方法并不能输出,void 返回值为空,应该用double 返回值吧 再接上return。 也有可能是我之前父类中定义 r , s , l 关键字 弄错了加了 abstract 关键字。
2017-06-05 回复 有任何疑惑可以回复我~
#2

非我所依兮 提问者

我感觉 这和接口的定义很相似了 一个全局变量加抽象方法。
2017-06-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

有关抽象类的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信