我了解面向对象编程的基本概念[继承,抽象,封装,多态]
我们在父子关系的情况下使用继承[子类可以拥有父类所有功能,并且还可以为自己添加更多功能]
而在Java中,我们使用抽象类来实现部分默认方法的集合,这些方法也可以通过简单的继承来实现。
请看下面的例子,这会让我的观点更加清晰。
继承:
父类
public class Parent {
// This method will remain same for all child classes.No need to override
public void abc() {
System.out.println("Parent here");
}
// This methods need to be overridden from child class
public int getROI() {
return 0;
}
}
子类
public class Child extends Parent{
@Override
public int getROI(){
return 5;
}
public static void main(String[] args) {
Child child =new Child();
child.abc();
System.out.println(child.getROI());
}
}
抽象类:
父类
abstract class Parent {
// This method will remain same for all child classes.No need to override
public void abc() {
System.out.println("Parent here");
}
// This methods need to be implemented from child class
public abstract int getROI();
}
子类
public class Child extends Parent{
public int getROI(){
return 5;
}
public static void main(String[] args) {
Child child =new Child();
child.abc();
System.out.println(child.getROI());
}
}
对于以上程序,输出将相同。
O/P:
Parent here
5
所以我认为,
继承:我们需要在子类中重写该方法。
抽象类:在方法名中放置abstract关键字并且需要在子类中实现该方法。
所以无论是否使用abstract关键字,继承和抽象类是相同的。
因此,我们可以使用继承来实现抽象类,这里只需更改方法签名的类(这是我的信念)。
是否存在任何显着的差异?