java中继承 多态 抽象类 接口之间的关系和作用,我总结了下,帮我看看理解对不? 195
首先多态抽象类接口必须都是在继承的基础上才能实现的吗,没有继承一切都是扯淡?继承子类继承父类,然后是不是说把不同的子类共有的属性方法,都写到父类里去,这样共有的东西每个子...
首先多态 抽象类 接口必须都是在继承的基础上才能实现的吗,没有继承一切都是扯淡?
继承
子类继承父类,然后是不是说把不同的子类共有的属性方法,都写到父类里去,这样共有的东西每个子类里就不写了,节省代码了?这就是继承的作用吗?
多态
首先要实现多态,前提是继承关系,这是必须的!
那多态怎么表现呢?就是子类都有不同的方法状态,那父类通过向上转型可以分别调用不同子类的方法,从而实现不同子类的状态,这样一个父类可以实现多个子类的不同状态,就称为多态?
那继承和多态的区别就出来了:
继承感觉是子类调用共有的父类资源的过程是继承? 这是从子类到父类
从父类实现子类不同的方法过程是多态? 这是从父类到子类
就好比儿子继承了父亲,那父亲的资源儿子当然可以拿来用
反过来,不同儿子的财产父亲也都可以使用,这不就是多态吗?(这是向上转型)
假如还一种情况,儿子的私房钱,如果父亲要用就要和儿子商量,这就是强制对象转换也叫向下转型,然后就可以调用儿子的特殊方法(私房钱)
===================
那抽象类怎么理解?
实现多态,必须父类是抽象类吗?可是上面父类不是抽象类,也能通过向上向下转型实现多态的效果啊,那还要抽象类有什么用和好处?难道说抽象类可以比普通类实现多态节省代码还是更方便,没感觉出来啊,顶多抽象类里抽象方法没有方法体,可是普通父类里我也可以不写内容啊,然后子类一样可以重写有什么不可以的?
请问抽象类和多态有什么不同和优势,其实也可以这么说抽象父类和普通父类区别?
===================
接口
我简单的理解是这样,子类只能继承一个父类,但是子接口可以继承多个父接口?
那接口和抽象类有联系吗?
比如一个抽象父类 一个子类 一个父接口 一个子接口
是父接口和抽象父类连接,还是说子类也可以单独连接父接口?
那抽象类是多态的表现,那接口也是多态的表现吗,两个都是为了更好的实现多态?那谁的灵活性好?还是看需求,能用抽象类就用抽象类,抽象类实现不了的就用接口?
前两个帮我看看理解对不对,后面两个还有点疑惑,在帮我讲讲拉 展开
继承
子类继承父类,然后是不是说把不同的子类共有的属性方法,都写到父类里去,这样共有的东西每个子类里就不写了,节省代码了?这就是继承的作用吗?
多态
首先要实现多态,前提是继承关系,这是必须的!
那多态怎么表现呢?就是子类都有不同的方法状态,那父类通过向上转型可以分别调用不同子类的方法,从而实现不同子类的状态,这样一个父类可以实现多个子类的不同状态,就称为多态?
那继承和多态的区别就出来了:
继承感觉是子类调用共有的父类资源的过程是继承? 这是从子类到父类
从父类实现子类不同的方法过程是多态? 这是从父类到子类
就好比儿子继承了父亲,那父亲的资源儿子当然可以拿来用
反过来,不同儿子的财产父亲也都可以使用,这不就是多态吗?(这是向上转型)
假如还一种情况,儿子的私房钱,如果父亲要用就要和儿子商量,这就是强制对象转换也叫向下转型,然后就可以调用儿子的特殊方法(私房钱)
===================
那抽象类怎么理解?
实现多态,必须父类是抽象类吗?可是上面父类不是抽象类,也能通过向上向下转型实现多态的效果啊,那还要抽象类有什么用和好处?难道说抽象类可以比普通类实现多态节省代码还是更方便,没感觉出来啊,顶多抽象类里抽象方法没有方法体,可是普通父类里我也可以不写内容啊,然后子类一样可以重写有什么不可以的?
请问抽象类和多态有什么不同和优势,其实也可以这么说抽象父类和普通父类区别?
===================
接口
我简单的理解是这样,子类只能继承一个父类,但是子接口可以继承多个父接口?
那接口和抽象类有联系吗?
比如一个抽象父类 一个子类 一个父接口 一个子接口
是父接口和抽象父类连接,还是说子类也可以单独连接父接口?
那抽象类是多态的表现,那接口也是多态的表现吗,两个都是为了更好的实现多态?那谁的灵活性好?还是看需求,能用抽象类就用抽象类,抽象类实现不了的就用接口?
前两个帮我看看理解对不对,后面两个还有点疑惑,在帮我讲讲拉 展开
3个回答
展开全部
子类继承父类,是说把不同的子类共有的属性方法,都写到父类里去,这样共有的东西每个子类里就不写了,节省代码了,并且有利于后期的维护,有利于实现多态。
继承和实现抽象类都是多态的不同表现,都属于多态。抽象类是把几个类共有的属性提取出来,供几个类使用。可以更好的实现代码的重用,有利于后期的维护。因为抽象类能实现好几个接口,而继承只能继承一个父类。
接口是抽象类的表现形式,抽象类里面包括接口,或者说抽象类是由接口组成的。
继承和实现抽象类都是多态的不同表现,都属于多态。抽象类是把几个类共有的属性提取出来,供几个类使用。可以更好的实现代码的重用,有利于后期的维护。因为抽象类能实现好几个接口,而继承只能继承一个父类。
接口是抽象类的表现形式,抽象类里面包括接口,或者说抽象类是由接口组成的。
追问
那可以这么理解嘛,继承来表现多态就是父类不是抽象类。继承而父类是抽象类的,就是用抽象类来表现多态。所以说继承和抽象类都算是表现多态的2种方式?
你这句话:抽象类是把几个类共有的属性提取出来,我有点疑问,难道不是抽象类的父类就不能把几个类的共有属性提取出来吗?
展开全部
继承主要是只能把共用的并且对所有子类来说基本上不会有特别处理的部分提到父类中。这叫共性,目的不是为了节省代码。你只需要记住在编程中减少敲键盘次数永远不是编程语言设计的目的(部分网络编程语言会这么做,但它基本上这样的编程语言不适合解决通用性的复杂问题,只适合面向某个特定方向(比如网页)的编程)。
多态也不是说让父类使用孩子的特性而是说允许不同的孩子以相同的方式被处理,就像我们社会中允许个性化一样,前提是只要它们都有适合当前处理的共性的基础上个性化是完全允许的,比如说,同样是为了加密处理这个共性,每个子类可以使用不同的加密算法,这就是个性化,在外部调用时它只要求加密,而加密的提供者允许给出不同的实现,这就叫多态。
多态也不是说让父类使用孩子的特性而是说允许不同的孩子以相同的方式被处理,就像我们社会中允许个性化一样,前提是只要它们都有适合当前处理的共性的基础上个性化是完全允许的,比如说,同样是为了加密处理这个共性,每个子类可以使用不同的加密算法,这就是个性化,在外部调用时它只要求加密,而加密的提供者允许给出不同的实现,这就叫多态。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先概念问题,类和借口的概念是不同的,继承父类的子类,和实现接口的实现类,要说继承接口,是不对的,实现借口的也不能叫子类,而叫实现类。
java中有现成的多态的例子,就是跨数据库。
java中有Connection接口,里面有方法叫close(关闭连接),然而每次连接数据库都要引入对应数据库的jar包,原理是什么呢,因为不同的数据库关闭的方式不同,每个jar包中,都会有对应实现Connection的类实现close方法,关闭连接的操作由下面的实现类自己去操作,如果是oracle数据库,则此时的Connection是orale提供的jar包中的实现Connection的类,如果是Sql server 那此时的Connection是sql server的,这个Connection就是多种状态了,也就是多态。好处嘛,这里就是跨平台喽,也可以隐藏实现类的代码,如果你研究一种数据库,你提供写一个实现Connection的类,那么java就可以连接了。
借口可以说是所有方法均为抽象的抽象类,但又不能叫做类。
问得太多了,有问题追问吧。
java中有现成的多态的例子,就是跨数据库。
java中有Connection接口,里面有方法叫close(关闭连接),然而每次连接数据库都要引入对应数据库的jar包,原理是什么呢,因为不同的数据库关闭的方式不同,每个jar包中,都会有对应实现Connection的类实现close方法,关闭连接的操作由下面的实现类自己去操作,如果是oracle数据库,则此时的Connection是orale提供的jar包中的实现Connection的类,如果是Sql server 那此时的Connection是sql server的,这个Connection就是多种状态了,也就是多态。好处嘛,这里就是跨平台喽,也可以隐藏实现类的代码,如果你研究一种数据库,你提供写一个实现Connection的类,那么java就可以连接了。
借口可以说是所有方法均为抽象的抽象类,但又不能叫做类。
问得太多了,有问题追问吧。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询