在学习的路上,我们只记得学习新的知识,却忽略了一切新知识都是在旧知识的基础上;努力奔跑的过程中,也要记得常回头看看;
题目展示:
解析:
abstract是抽象的意思,在java中,规定只能修饰类或者方法,所以不能修饰属性(字段)。
(1)abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型(见后面实例),也就是编译时类型。抽象类就相当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
(2)abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明而没有实现,需要子类继承实现(覆盖)。
错误原因分析:
将private(私有化)和abstract(抽象化)混淆;
解析:
我们区分一下以下几个概念:
- ①构造方法:构造方法是用来构造类的对象的,方法名和类名相同没有返回值。一般用 new 构造方法名() 来创建该类的对象。在不写构造方法的情况下会有一个默认的无参构造方法,当然你也可以重写和重载构造方法。
- ②实例方法:即:成员方法。简单地说就是可以通过类的实例(某个对象)调用的方法,也就是我们正常情况下使用的方法。
- ③类方法:简单地说就是直接可以用类名调用的方法,也就是被关键字static修饰的方法,它不需要创建类的对象来调用该方法。
- ④父类和超类是一个意思,只是不同的叫法而已。又可分为直接父类和间接父类,不同的书籍中不同的叫法而已。
那么实例方法究竟能不能直接调用超类的实例方法呢?
答:如果超类的实例方法没有在子类中被重写的就可以直接调用,但如果经过子类重写了的话就被覆盖了,这时需要通过super关键字来调用了。
错误分析:基础不稳;
解析:
抽象类可以声明并定义构造方法,用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super(),Java中默认超类的构造函数。
另外强调几个抽象类相关知识点(可参考下面连接):
抽象类知识点_南斋孤鹤的博客-CSDN博客
错误原因:基础给忘了;
解析:
Java中父类构造函数是不可以被子类继承的,所以不能够重写。
只是构造子类时子类会在构造函数中就会首先去调用父类的构造,默认调用的是父类的无参构造。如果你需要参数个数不同的构造,可以在父类中写多个构造方法的。