首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用子类实例化的父对象有什么用处

使用子类实例化的父对象有以下几个用处:

  1. 代码复用:父类中的公共方法和属性可以被子类继承和重用,减少了代码的重复编写,提高了代码的可维护性和可读性。
  2. 多态:子类实例化的父对象可以被当作父类对象来使用,这样可以实现多态的效果,即同一个接口可以被不同的对象实现,提高了代码的灵活性和可扩展性。
  3. 抽象:父类可以定义一些抽象方法,这些方法只有具体的子类才能实现,子类实例化的父对象可以让我们更加灵活地使用这些抽象方法,而不需要关心具体的实现细节。
  4. 设计模式:使用子类实例化的父对象可以实现一些设计模式,如工厂模式、单例模式、策略模式等,这些设计模式可以帮助我们更好地组织和管理代码,提高代码的质量和可维护性。

以下是一些常见的父类和子类的例子:

  1. 父类:动物(Animal),子类:狗(Dog)、猫(Cat)、鸟(Bird)等。
  2. 父类:交通工具(Transportation),子类:汽车(Car)、火车(Train)、飞机(Airplane)等。
  3. 父类:形状(Shape),子类:圆形(Circle)、矩形(Rectangle)、三角形(Triangle)等。
  4. 父类:数据库(Database),子类:关系型数据库(Relational Database)、非关系型数据库(NoSQL Database)等。

总之,使用子类实例化的父对象可以帮助我们更好地组织和管理代码,提高代码的可维护性、可读性、灵活性和可扩展性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C++】继承 ⑥ ( 类型兼容性原则 | 父类指针 指向 子类对象 | 使用 子类对象 为 父类对象 进行初始化 )

" 公有继承 " 的 派生类 ( 子类 ) 本质上 具有 基类 ( 父类 ) 的 完整功能 , 使用 基类 可以解决的问题 , 使用 公有继承派生类 都能解决 ; 特别注意 : " 保护继承 " 和..." 应用场景 : 直接使用 : 使用 子类对象 作为 父类对象 使用 ; 赋值 : 将 子类对象 赋值给 父类对象 ; 初始化 : 使用 子类对象 为 父类对象 初始化 ; 指针 : 父类指针 指向...); } 2、使用 子类对象 为 父类对象 进行初始化 定义父类对象 , 可以直接使用 子类对象 进行初始化操作 ; // II....类型兼容性原则 : 使用 子类对象 为 父类对象 进行初始化 Parent parent = child; 3、完整代码示例 #include "iostream" using namespace...类型兼容性原则 : 使用 子类对象 为 父类对象 进行初始化 Parent parent3 = child; // 控制台暂停 , 按任意键继续向后执行 system(

44100
  • 创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法?

    A对象的时候父类会调用子类方法?...但是:创建B对象父类会调用父类的方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...如果,子类重写了父类的方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父类的方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译的时候,父类构造方法调用的方法的参数已经强制转换为符合父类方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。

    6.2K10

    【C++】继承 ⑥ ( 继承中的构造函数和析构函数 | 类型兼容性原则 | 父类指针 指向 子类对象 | 使用 子类对象 为 父类对象 进行初始化 )

    " 公有继承 " 的 派生类 ( 子类 ) 本质上 具有 基类 ( 父类 ) 的 完整功能 , 使用 基类 可以解决的问题 , 使用 公有继承派生类 都能解决 ; 特别注意 : " 保护继承 " 和..." 应用场景 : 直接使用 : 使用 子类对象 作为 父类对象 使用 ; 赋值 : 将 子类对象 赋值给 父类对象 ; 初始化 : 使用 子类对象 为 父类对象 初始化 ; 指针 : 父类指针 指向...); } 2、使用 子类对象 为 父类对象 进行初始化 定义父类对象 , 可以直接使用 子类对象 进行初始化操作 ; // II....类型兼容性原则 : 使用 子类对象 为 父类对象 进行初始化 Parent parent = child; 3、完整代码示例 #include "iostream" using namespace...类型兼容性原则 : 使用 子类对象 为 父类对象 进行初始化 Parent parent3 = child; // 控制台暂停 , 按任意键继续向后执行 system(

    30920

    父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法

    父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法 静态属性通过类.属性的方式获取,对象获取使用get方法获取 package com.example.core.mydemo.java...String channelName) { this.channelName = channelName; } /** * partnerName: //通过父类属性的方式获取不到值...,需要使用get方法 * channelName: //通过父类属性的方式获取不到值,需要使用get方法 * partnerName2:合作商名称 * channelName2...* channelName3:渠道商名称 //对象自身的属性值可以获取 * partnerName4:合作商名称 * channelName4:渠道商名称...* MAX=100 静态属性通过类.属性的方式获取,对象获取使用get方法获取 * @param args */ public static void main(String

    9910

    JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类

    主打方向:Vue、SpringBoot、微信小程序 本文讲解了 Java 设计模式中的工厂方法模式,并给出了样例代码,工厂方法模式是一种创建型设计模式,它提供了一种将对象的实例化过程封装在子类中的方式...---- 一、什么是工厂方法模式 工厂方法模式是一种创建型设计模式,它提供了一种将对象的实例化过程封装在子类中的方式,在工厂方法模式中父类定义了一个创建对象的接口,但具体的对象的创建由子类决定。...这样,将对象的实例化过程延迟到子类中,使得子类可以根据需要创建具体的对象。 在工厂方法模式中,通常会有一个抽象工厂类和多个具体工厂类。...---- 四、工厂方法模式面试题 什么是工厂方法模式? 工厂方法模式和简单工厂模式有什么区别? 工厂方法模式的角色有哪些? 工厂方法模式的优点是什么? 工厂方法模式的缺点是什么?...工厂方法模式和抽象工厂模式有什么区别? 简述使用工厂方法模式实现一个日志记录器的例子。 工厂方法模式和单例模式可以结合使用吗?

    31840

    Java——String类使用详解(实例化、字符串比较、匿名对象、两种实例化方法的区别)

    1、String类的两种实例化方式 String类不是一个基本数据类型,它是一个类,这个类设计过程种加入了Java的特殊支持,其实例化形式有两种形式: 直接赋值: String 对象 = “内容”; 构造方法...4、String类两种实例化的区别 由第一节中 的内容可知,对于String示例化方式有两种,到底该使用哪种,两种的区别是什么?...在使用直接赋值实例化String类对象操作中,字符串内容定义后实际上会自动保存在一个对象池之中,而后,若有其他 的字符串对象也采用直接赋值的形式,且内容与之前的完全相同,则不会开辟新的堆内存空间,而是通过对象池...(str);//false 使用构造方法进行String类对象实例化,产生的对象不会保存在对象池中,此对象无法重用。...").intern; //构造方法 String strb = "hello"; //直接赋值 System.out.println(str);//此处结果为true 【经典问题】:String类两种对象的实例化区别是什么

    1.8K10

    Java基础知识三问—百度真题

    今天就来一起来回顾下java的基础知识: java有什么特性,继承有什么用处,多态有什么用处 反射是什么,在哪里用到,怎么利用反射创建一个对象 静态方法,静态属性可以被继承吗 java有什么特性,继承有什么用处...,多态有什么用处 java三大特性,也是面向对象的「三大特性」:封装,继承,多态 java还可以加上抽象、接口两大特性。...如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是跟实例方法和属性不太一样,存在"隐藏"的这种情况。...有了继承和重写就可以实现父类的引用指向不同子类的对象。重写的功能是:"重写"后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。...静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。非静态方法可以被继承和重写,因此可以实现多态。

    63630

    Java之多态

    简化性 多态存在的三个必要条件 继承 重写 父类引用指向子类对象 比如:Parent p = new Child(); 对象的转型 为什么需要强制转换类型?...子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting) 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法...多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。 以下是一个多态实例的演示,详细说明请看注释: ? ? ? ?...当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。 要想调用父类中被重写的方法,则必须使用关键字super。 如图看看下个代码演示: 父类 ? 子类 ? 测试类 ?...在测试类中使用动物类实例化一个老虎类调用跑的方法。 在测试类中使用动物类实例化一个袋鼠类调用跑的方法。 ? 答案在公众号回复“多态”

    60910

    C++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?

    开场 前段时间我在知乎回答了这样一个问题: 为什么C++单例模式不能直接全部使用 static变量和 static函数呢?如果全部使用 static的话,是不是也不会有多线程的问题了?...那么为什么Meyers推荐的是第一种的呢? 原因是这解决了一类重要问题,那就是static变量的初始化顺序的问题。...然后对于单例模式而言,不同的单例对象之间进行调用也是常见的场景。比如我有一个单例,存储了程序启动时加载的配置文件的内容。另外有一个单例,掌管着一个全局唯一的日志管理器。...这时候两个单例在不同文件中各自实现,很有可能在日志管理器的单例使用配置文件单例的时候,配置文件的单例对象是没有被初始化的。...,来拓展成新的子类,比如Monitor显示器类有开关状态,同时扩展了一个亮度的成员。

    1.3K20

    Java之继承、抽象类、接口篇

    :如果不指明任何权限,则默认同一包中的类可以访问 继承条件下的构造方法调用 首先,看这段代码有什么发现?...2).在初始化子类之前显示初始化父类,爸爸出来才有儿子,没有爸爸儿子不可能出来哈。     3).在子类中调用父类的属性,super. 和 this. 的形式区分于父类、子类的成员。...二、抽象(abstract)和接口(interface) 抽象类和抽象方法 有abstract修饰的类称为"抽象类",它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后...,才能使用new关键字创建对象。...实现子接口的类,必须实现"父""子"接口所定义的所有方法,才能被实例化(即new出一个对象)。 利用接口定义常量 只要一个类声明实现了这个接口,就可以直接使用这些常量名。

    1.1K00

    java基础-2

    继承,对象的一个新类可以从现有的类中派生,派生类可以从它的基类那继承方法和实例变量,且派生类可以修改或新增新的方法使之更适合特殊的需求 封装,将客观事务抽象成类,每个类可以把自身数据和方法只让可信的类或对象操作...简化性 多态存在的3个必要条件 继承 重写 父类引用指向 子类对象 Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有...多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。...,子类构造函数 接口和抽象类的相同点和区别 相同点: 都不能被实例化 接口的实现类   或 抽象类 的 子类   需要实现接口 或 抽象类中 相应的方法 才能被实例化 不同点: 接口只能有方法定义...,推荐使用抽象类,有利于功能的累积,,当功能不需要,希望支持差别较大的两个或更多对象间的特定交互行为,推荐使用接口。

    32640

    Kotlin|这些隐藏的内存陷阱,你应该熟记于心

    在某种意义上,他们是枚举类的扩展:枚举类型的值集合也是受限的,但每个枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例。...错误示例 sealed 初始化 如题,我们有一个公用的属性 sum ,为了便于复用,我们将其抽离到 Fruit 类构造函数中,让子类便于初始化时传入,而不用重复显式声明。...如果我们此时来看一下字节码: 不难发现,无论是子类Apple还是父类Fruit,他们都生成了 getSum() 与 setSum() 方法 与 sum 字段,而且,父类的 sum 完全处于浪费阶段,我们根本没法用到...每次调用时,相当于需要创建匿名类的实例对象,从而导致二次调用的性能损耗。 那如果我们给其增加 inline 呢?...作用也相对直接,如果我们有某个对象或字段,我们可能只想使用时再初始化,此时就可以先声明,等到使用时再去初始化,并且这个初始化过程默认也是线程安全(不特定使用NONE)。

    82330

    【JavaSE专栏64】抽象类和接口,不能被实例化的类有什么用?

    ---- 一、什么是抽象类 在 Java 中,抽象类是指不能被实例化的类,它只能被用作其他类的基类。...抽象类通过关键字 abstract 来声明,包含抽象方法和非抽象方法,抽象方法是只有声明而没有实现的方法,需要子类来实现,非抽象方法是有具体实现的方法,子类可以直接继承和使用。...抽象类有以下 4 个特点,请同学们认真学习。 抽象类不能被实例化:抽象类不能直接创建对象,只能作为父类被继承。...通过创建Animal类型的对象引用 dog 和 cat,并调用其相应的方法,可以看到不同子类对象的不同行为。...抽象类是一种特殊的类,不能被实例化,只能被继承,它提供了一种机制来定义类的接口和规范,实现了代码的复用性和扩展性。

    45820

    面向对象基础知识学习总结笔记2019-8-26

    什么是类?具有相同属性和行为(或者叫功能)的对象的抽象的集合 ———————————————————- 类的实例化; 实例—就是一个真实的对象....实例化就是创建对象的过程,使用new关键字来创建。...多态存在三个必要条件: 1.继承 2.重写 3.父类的引用指向子类对象 Animal animal = new Cat(); 当使用多态方式调用方法时,首先检查父类中是否有该方法...多态调用方法—-[编译看左边,运行看右边] 多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。...抽象类中可以有抽象方法,也可以没有抽象方法. 抽象类拥有尽可能多的共同代码。 什么时候使用抽象类?

    25410

    Python面向对象_

    如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址; d. 但是实例方法是所有对象共享的,只占用一份内存空间。类会通过self来判断是哪个对象调用了实例方法。 2....子类继承多个父类 1) 如果多个父类的方法名相同,子类会默认继承第一个父类的方法 2) 如果父类的属性名相同,子类也会继承第一个父类的属性 i. 为什么会继承第一个父类的属性?...子类继承了父类,子类实现了父类的同名方法,做自己特有的事情,叫做重写 1) 子类继承(一个)多个父类 i. 如果子类重写了父类的同名方法,子类对象调用这个同名方法,会使用子类的 ii....继承了父类,没有重写,会使用父类的 iii. 多个父类的方法名不同,子类会全部继承 2) 当子类调用一个方法的时候 i. 如果子类有, 使用子类的 ii....私有属性 和 私有方法 a.如果子类继承了父类,父类有私有属性,那么私有属性不能被子类继承 子类继承的是父类的公有属性和公用方法 b.如果自定义类中的属性和方法进行私有后,,使用这个类创建的对象,在类的外面

    44730

    Python 面向对象的总结_

    有参数的init()方法 a. 在类内部获取 属性 和 实例方法,通过self获取; b. 在类外部获取 属性 和 实例方法,通过对象名获取。 c....如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址; d. 但是实例方法是所有对象共享的,只占用一份内存空间。类会通过self来判断是哪个对象调用了实例方法。 2....子类继承多个父类 1) 如果多个父类的方法名相同,子类会默认继承第一个父类的方法 2) 如果父类的属性名相同,子类也会继承第一个父类的属性 i. 为什么会继承第一个父类的属性?...继承了父类,没有重写,会使用父类的 iii. 多个父类的方法名不同,子类会全部继承 2) 当子类调用一个方法的时候 i. 如果子类有, 使用子类的 ii....私有属性 和 私有方法 a.如果子类继承了父类,父类有私有属性,那么私有属性不能被子类继承 子类继承的是父类的公有属性和公用方法 b.如果自定义类中的属性和方法进行私有后,,使用这个类创建的对象,在类的外面

    33610

    Java多态(向上转型、动态绑定)+结合题目理解原理

    func(父类对象),但是我们进行这个func函数调用的时候,使用的是这个func(子类)进行调用的,这个就是参数的传递引起的向上转型现象,这个我们传递的参数是子类的对象,但是这个方法里面使用的是父类的对象进行接收...,我们D这个类是继承B的,因此我们的的这个主函数里面创建d这个对象的时候先回去调用父类的构造方法; 因为我们之前说过:执行顺序,父类的static方法,子类的static方法,父类的实例化,父类的构造,...子类的实例化,子类的构造,因此在这个里面,我们没有静态的方法,因此这个就会从我们的父类的实例化和构造开始执行,这个时候父类里面没有实例化,因此这个时候直接执行我们的这个构造,这个时候的构造里面是一个func...函数,这个函数在我们的父类和子类里面都是有实现的,但是这个时候在调用的时候我们调用的是子类的func函数,主要就是因为动态绑定(下面的一个点里面会说明): 运行的时候根据创建的对象的实际类型确定的,就是我们创建的是...:我们的执行顺序依然是这个父子类的静态方法,父类的实例化和构造,子类的实例化和构造方法; 这个里面没有静态的方法,因此这个时候直接进行实例化和构造的判断:这个主要就是捋清楚这个继承的层级关系,在这个里面

    5210
    领券