感觉 Java 中的抽象类和 C++ 中的模板相似
但不知道抽象类有会用下面这个感觉用不用抽象类都一样/**如果把抽象类去掉也是正确的,那这个抽象类有什么用呢**/
abstract class Shape //抽象类
{
abstract double area(); //抽象方法
}
class Circles extends Shape //继承抽象类
{
double radius;
double area() //实现抽象类的方法
{
return 3.14 * radius * radius;
}
}
class Rectangles extends Shape //继承抽象类
{
double length;
double width;
public double area() //实现抽象类的方法
{
return length * width;
}
}
class Ladders extends Shape //继承抽象类
{
double length;
double width;
double height;
public double area() //实现抽象类的方法
{
return (length + width) * height / 2;
}
}public class AbstractShapeDemo_4_22
{
public static void main(String[] args)
{
Circles c = new Circles();
c.radius = 2;
System.out.println(c.area()); Rectangles r = new Rectangles();
r.length = 4;
r.width = 3;
System.out.println(r.area()); Ladders l = new Ladders();
l.length = 4;
l.width = 3;
l.height = 2;
System.out.println(l.area());
}
}
但不知道抽象类有会用下面这个感觉用不用抽象类都一样/**如果把抽象类去掉也是正确的,那这个抽象类有什么用呢**/
abstract class Shape //抽象类
{
abstract double area(); //抽象方法
}
class Circles extends Shape //继承抽象类
{
double radius;
double area() //实现抽象类的方法
{
return 3.14 * radius * radius;
}
}
class Rectangles extends Shape //继承抽象类
{
double length;
double width;
public double area() //实现抽象类的方法
{
return length * width;
}
}
class Ladders extends Shape //继承抽象类
{
double length;
double width;
double height;
public double area() //实现抽象类的方法
{
return (length + width) * height / 2;
}
}public class AbstractShapeDemo_4_22
{
public static void main(String[] args)
{
Circles c = new Circles();
c.radius = 2;
System.out.println(c.area()); Rectangles r = new Rectangles();
r.length = 4;
r.width = 3;
System.out.println(r.area()); Ladders l = new Ladders();
l.length = 4;
l.width = 3;
l.height = 2;
System.out.println(l.area());
}
}
解决方案 »
- (聊天室功能制作)java怎么讲服务器的信息发送到客户端?
- jdbc连access,INSERT INTO语句的语法错误~~~
- 请问你们学会第一门语言用了多长时间?
- 一个ireport+jasperreports报表的一个最最基础的问题
- 提问:if(false == booleanXX){} and if(booleanXX == false){}有什么区别?
- 请问java在c++里注册的回调函数每调用一次都会重启虚拟机一次吗?
- 需要《java web program》原版书的电子版,发给我啊!谢谢诸位老大!
- 如何用JDBC获得DB2里面表的信息,包括字段名,类型,长度等等,主键等等
- 手机发短信息用到Unicode串到GBK串的转换,怎样转换?
- 类中一个String变量且赋值 生成的多个对象中 每个对象中的字符串变量是否仍是同一个String 字符串
- swt 中创建的线程不能访问组件。
- 诡异的thread问题
如果类中的某个方法的实现需要由子类实现,只需要声明为抽象方法即可(相当于C++中的纯虚函数)。这时类也随之变为抽象类,但它较接口的优势在于可以定义一些方法的实现。另外,抽象类的字段也可以被子类使用,而接口中的字段都是static和final的。
以上为一点浅见。
interface Queue {
Message read();
void delete(Message message);
void deleteAll() default {
Message message;
while ((message = read()) != null) {
delete(message);
}
}
}
还有一些工具的情况可以用使抽象类
楼主研究下设计模式,一些中间环节的类也可以写成抽象类,可起承上启下作用。你的这个例子可以从意义上理解,一个shape是一个抽象的事物,而Circles ,Rectangles 圆,三角型是具体的形状。具体形态要有具体的属性与方法,而抽象的事物只需抽象的方法,待具体事物去实现它就可。