java中抽象类问题

一、抽象类

1.1定义—以画图形为例

在这里插入图片描述

点击详见java接口问题

package g;
//有抽象方法的类必须声明为抽象类,因此GraphicObject需要添加关键字abstract
//抽象类不能被实例化,类本来就是不健全的,要创建一个对象,那肯定是不行的
abstract class GraphicObject{
//class GraphicObject{}不声明为抽象会报错会报错
	protected int x;
	protected int y;

	public GraphicObject(int x, int y) {
		this.x = x;
		this.y = y;
	}//构造器
	
	void moveTo(int x,int y) {
		this.x = x;
		this.y = y;
	//moveTo方法,新坐标位置	
	}
	
	public void showLocation() {
		System.out.println("x="+x+",y="+y);
	}
	
//	抽象方法没有方法体,即代码块
//	声明为抽象方法,因为不知道如何去实现它
//	如果父类声明了抽象的方法,那么子类就必须要实现它(父亲没有完成这个功能,孩子要去实现),
//	因此这个方法对所有的子类进行了约束
	abstract void draw();
//void draw(){draw()方法,不确定要画什么,无法实现,什么都没做,相当于抽象功能},需要
//在前面加abstract声明,且不加代码块
	
}
abstract class Circle extends GraphicObject{
//要重写构造器,因为构造器不属于类成员,不能被继承
	Circle(int x,int y){
		super(x,y);
		}
	//子类必须实现父类的抽象方法,否则这个类必须声明为抽象类
//	public void draw() {
//		System.out.println("画一个圆,["+x+y+"]");
//		
//	}
	
}
class Rectangle extends GraphicObject{
	Rectangle(int x,int y){
		super(x,y);
		}
	//子类必须实现父类的抽象方法,否则这个类必须声明为抽象类
	public void draw() {
		System.out.println("画一个矩形,["+x+","+y+"]");
		
	}//因为有不同的实现内容,所以要重写方法
	
}
public class day808 {
	public static void main(String[] args) {
//		如果类是抽象的,即什么都没做,不应该能具体的对象(图像)
//		抽象类不能创建对象
//		GraphicObject g=new GraphicObject(0,0);
//		
//		Circle c =new Circle(0,0);//当Circle类声明为抽象类时,抽象类不能创建对象
//		c.showLocation();
//		c.draw();
		
		Rectangle r=new Rectangle(5,6);
		r.showLocation();
		r.draw();
	}
}

二.补充说明

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值