Pra*_*tel 5 java oop inheritance abstract-class abstraction
我了解OOP概念的基础知识[继承,抽象,封装,多态]
我们在父子关系的情况下使用继承 [子级可以具有父级具有的所有功能,也可以为其自身添加更多功能]
并且我们将Abstract类(在Java中)用于类中方法的部分默认实现集,这也可以通过简单的Inheritance实现。
看下面的例子,这使我的观点清楚。
遗产:
家长班
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;
}
}
Run Code Online (Sandbox Code Playgroud)
儿童班
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());
}
}
Run Code Online (Sandbox Code Playgroud)
抽象类:
家长班
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();
}
Run Code Online (Sandbox Code Playgroud)
儿童班
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());
}
}
Run Code Online (Sandbox Code Playgroud)
对于上述程序,o / p将相同。
O/P:
Parent here
5
Run Code Online (Sandbox Code Playgroud)
所以我认为,
继承:我们需要重写子类中的方法
抽象类:将抽象关键字放在方法名称中,需要在子类中实现该方法
因此,无论抽象关键字如何,继承和抽象类都是相同的
因此,我们可以使用继承来实现抽象类,这里只是方法签名更改类(这是我的信念)。
有什么显着差异吗?
继承用于继承属性并具有其自身的一些属性。
抽象是限制实例化。
示例:
让我们接受Vehicle和VehiclePart。但是,车辆本身是非常抽象且不完整的。所以我们想要Vehicle类抽象,因为我们不想直接实例化它。汽车是比汽车更有意义的实体,汽车是汽车。因此,汽车扩展了车辆,它不是抽象的。
abstract class Vehicle{
String name;
}
abstract class VehiclePart{
String name;
Date expiry;
}
class Car extends Vehicle{
List<VehicleParts> parts;
}
class RacingCar extends Vehicle{
}
class Gear extends VehiclePart{
int numOfGears;
}
Run Code Online (Sandbox Code Playgroud)
继承:我们需要重写子类中的方法
不。在上面的示例中,您可以看到Car正在从Vehicle继承名称之类的属性。覆盖是可选的。像RacingCar一样,可以重写Car的方法并使之自定义。但基本上,它是从基类获取(继承)一些属性。就像汽车的所有基本属性一样,汽车将具有这种特性,而不是RacingCar。RacingCar将具有特定于它的属性。
抽象类:将抽象关键字放在方法名称中,需要在子类中实现该方法
不。只是为了限制其实例化。例如。我们不想实例化Vehicle对象,因为它没有意义。车辆必须是诸如汽车,公共汽车等之类的东西。它不能仅仅是车辆。因此,我们放置抽象并限制实例化。
通过继承,您不需要重写方法。如果不重写,getROI您Child仍然可以调用new Child().getROI()并获得0响应。
另一方面,如果方法是抽象的,则需要由子方法实现,因为没有默认实现。
| 归档时间: |
|
| 查看次数: |
14511 次 |
| 最近记录: |