【发布时间】:2017-03-30 08:04:48
【问题描述】:
我了解 OOP 概念的基本原理[继承、抽象、封装、多态]
在父子关系的情况下,我们使用继承[子可以拥有父拥有的所有功能,也可以为自己添加更多功能]
我们使用抽象类(在 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 将是相同的。
O/P:
Parent here
5
所以我认为,
继承:我们需要重写子类中的方法
抽象类:方法名中加上abstract关键字,需要在子类中实现方法
所以继承和抽象类是一样的不管抽象关键字是什么
所以我们可以使用继承来实现抽象类,这里只是方法签名更改类(这是我的信念)。
有什么明显的区别吗?
【问题讨论】:
-
对了不好意思忘了说抽象类,这里我说一下抽象类和继承的主要区别
标签: java oop inheritance abstract-class abstraction