Java学习笔记;abstract类和面向抽象编程

abstract类
abstract类用abstract关键字修饰的类,也叫抽象类。不能用new运算符创建对象。
而对于abstract方法只能进行声明,不能去实现(没有方法体)
而且也不能用final和abstract同时修饰一个方法或类(若非抽象类是某抽象类的子类,就必须重写父类的抽象方法),也不允许static修饰abstract方法,即abstract必须是实力方法。
**abstract方法只能出现在abstract类中。**加粗样式
作用(自我理解)
看起来抽象类一大堆要求,方法由只能声明,不能实现功能,但某具体类继承该抽象类以后,必须重写该类的抽象方法,也就是说,有几个子类就可以重写出几个不同的方法,实现不同的功能,然后子类对象上转型为抽象对象,所以主类只需要关注该抽象类即可,不需要考虑继承的它的子类有什么数据,。
而所谓的面向抽象编程
是指当设计某种重要的类时,不让该程序面向具体的类,而是面向抽象类,即所涉及的重要数据是抽象类声明的对象,而不是具体类的声明对象。

在这里插入图片描述
具体代码为
DiMianJ.java
package Abstract;

public abstract class DiMianJ {
public abstract double getArea();
}

Pillar.java
package Abstract;

public class Pillar {
DiMianJ dimianji; //dimianji是抽象类DiMian声明的对象
double h;
Pillar(DiMianJ diMianJ,double h) { //只关注该抽象类对象即可
// TODO Auto-generated constructor stub
this.dimianji=diMianJ;this.h=h;
}
public double getVolume() {
return dimianji.getArea()*h;
}
}

JuXing.java
package Abstract;

public class JuXing extends DiMianJ{
double a,b;
JuXing(double a,double b) {
// TODO Auto-generated constructor stub
this.a=a;
this.b=b;
}
public double getArea() {
return a*b;
}
}

YuanXing.java
package Abstract;

public class YuanXing extends DiMianJ{
double r;
YuanXing(double r){
this.r=r;
}
public double getArea() {
return 3.14rr;
}
}

TiJi.java
package Abstract;

public class TiJi {

public static void main(String[] args) {
	// TODO Auto-generated method stub
  Pillar p;
  DiMianJ b;
  b=new YuanXing(10);
  p=new Pillar(b,58); 
  System.out.println("圆形主体体积为"+p.getVolume());
  b=new JuXing(12, 22);
  p=new Pillar(b, 58);
  System.out.println("矩形主体体积为"+p.getVolume());
}

}
结果截图
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值