是不是java的抽象类都不必有构造方法?
3个回答
展开全部
从Java语法上来说,抽象类【可以】没有构造方法,但是Java会默认有一个无参构造方法
从设计上来说,抽象类【不一定】有构造方法
A. 在Java的面向对象设计中,类是is-a,是一类对象的抽象
B. 那么抽象类也是一类对象的抽象,只是有些具体的实现需要子类实现
举个简单的例子:
有个抽象类形状:Xing
有2个属性:边框颜色color、边框宽度size
有1个方法:打印print()
因为正方形、长方形的打印方式都不一样,那么print() 为抽象方法
设计1:提供颜色color、宽度size的set方法,提供数据
2:采用构造函数,直接传入颜色color、宽度size
如下:形状
// 形状类
public abstract class Xing {
protected String color;
protected int size;
// 构造方法
public Xing(String color, int size) {
this.color = color;
this.size = size;
}
public abstract void print(); // 打印方法
}
正方形
// 正方形
public class Zfx extends Xing {
// 这里就约束了子类必须要给定这2个属性
// 而且必须有这个构造,不然编译不让过去
public Zfx(String color, int size) {
super(color, size);
}
@Override
public void print() {
System.out.println("我是正方形,边宽度" + size +" ,颜色" + color);
}
}
例子简单,不一定很正确,只是解释这种情况,多包涵
小结:抽象类的有参构造方法,不是语法上的规定,更多的是一种设计的方式
亲,如果回答满意,亲及时采纳,谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询