首页编程java编程java继承中执行顺序是什么 java某个类既要继承又要实现接口,为什么继承要写在前面啊

java继承中执行顺序是什么 java某个类既要继承又要实现接口,为什么继承要写在前面啊

编程之家2023-10-1384次浏览

大家好,今天小编来为大家解答java继承中执行顺序是什么这个问题,java某个类既要继承又要实现接口,为什么继承要写在前面啊很多人还不知道,现在让我们一起来看看吧!

java继承中执行顺序是什么 java某个类既要继承又要实现接口,为什么继承要写在前面啊

java中的继承问题

以下都把A作为父类,B作为子类。

1,一个一个说,如果任何A的方法(包括public和protected)都不重载,那么继承是毫无意义的。

A和B此时是等同的,任何使用B的地方都可以使用A,任何使用A的地方都可以使用B。继承就是为了发扬光大,扩展功能的。

java继承中执行顺序是什么 java某个类既要继承又要实现接口,为什么继承要写在前面啊

2,如果A有一个getConnection方法,B可以不必重载这个方法,但是B可能会重载connect方法,对连接的这一行为加以重新定义。那么下面代码:

A a= new A()

B b= new B();

java继承中执行顺序是什么 java某个类既要继承又要实现接口,为什么继承要写在前面啊

a.connect()和b.connect()的行为不同

但是a.getConnection()和b.getConnection()行为相同。对于对象方法(非static)必须通过new的对象来调用,不必new对象的说法是不对的,但是不必new父类的对象。

B b= new B(); b.connect();

继承是为了发扬光大,增加功能,同时还有一个明显的好处,就是上一代已经完成的功能,不必再重新实现一遍了,可以拿过来直接用。

继续说:

3,抽象类和接口,放在一起说:

首先是抽象类为啥一定要实现。凡是继承了某个抽象类的子类,如果自身不声明成也是抽象的话,就必须实现父类的所有抽象方法。这是语法的一个规定,抽象类不能new对象,不能new对象的东西,基本没啥用(你可能会说,我用static方法啊,静态方法是脱离了OO概念的,面向对象程序设计是提供一个舞台,各种对象在活动,你方唱罢我登场。static方法不需要对象,通常只用作一些工具类,比如math,可以说任何math对象的正弦函数实现都是一样的,只有满足这个条件,才能作为静态方法出现。)

因此作为抽象类的子类,有责任实现上一代的未竞事业。举个例子:

定义抽象类Bird,声明抽象方法jiao(),这个方法和具体是什么鸟有关(子类需要实现),并且和鸟的自身状态有关(对象方法,而不能是静态方法)。所以每个鸟的子类:Duck, Chicken

Goose都需要实现,哪怕只是一句:System.out.println("Ga Ga...");也是需要实现的。

java之所以有接口这个东西,很大一部分原因是java不支持多重继承,即一个类的的父类只能是一个,这样束缚了它的扩展性,好处是降低了复杂性。

应该这样理解接口,事物是复杂的,有主要属性,往往还有一些附加属性和方法。接口定义了一组行为集合,带有这类附加属性的类,往往在实现了主要属性的抽象方法后,还会实现附加的属性。

这里用我们最经常使用的String类做个例子:String类直接派生自Object类,即java的最顶层类,实现了对于字符序列的抽象。不过string还有一个很容易想到的附加属性,就是比较两个字符串的大小,这在排序中是很有用的。因为已经继承了Object类,无法再继承其他类,这就需要通过接口来实现:

public interface Comparable<T>

{

}

可以很轻易的想到:Double Integer还有好多类型都有相互比较的行为,这些类型之间或许有联系,不过大部分是没有什么必然联系。比如你定义Human类,Human的不同对象之间也有比较的行为,而且相当复杂,这些没有什么必然联系的类型却有同一种类似的行为——互相比较,这个用抽象类显然不合适,这里就是用接口最合适的地方。

抽象类集中了某一类东西的共同特征,接口却可以让他们分开——你自己愿意是什么就是什么,只要你遵循“契约”,你就可以拥有我的行为。

类似的例子还有:无论你是工人,农民,还是学生,或者什么人,都可以实现“驾驶”这一行为,

无论是Button,table,甚至布局,都可以实现一个onClickListener。

java中继承跟调用有什么不一样的,

。如果我写一个动物类,像你说的那样,然后我在写一个人类用调用不是一样吗?调用不也没有去申明吗?追问:麻烦你给讲一下啊这地方好迷糊啊不知道什么时候用继承什么时候调用好感觉都一样回答:写一个动物类然后写一个人类去继承动物类人可以调用动物类非私有的属性和方法.注意是直接调用.而你所说的调用是实例化动物类然后调用动物类的属性和方法.这个人类好不相关,是两个对象.距离说明.按我说的那样继承后 this.吃();//this是人类人类本身没有此方法但是从父类继承过来了.就等于自己有了.这方法的含义就是人吃东西.然而按你说的不继承那么就必须动物 a= new动物(); a.吃();这是动物吃东西而不是人吃.这就是两个本质的区别.追问:这个我也知道啊,但是继承也new了,只是它new的是人,之后直接可以用父类里的东西,这样说的话并没有体现出继承的优点跟好处,但是还是学继承,说明继承肯定还是有好处的,大家都说减少了代码量,它怎么减少了,我看它不是跟调用一样吗?回答:...呃,原来你是没转过面向对象的弯.面向对象确实很抽象,你既然知道怎么用,那就先生搬硬套的用着.写多了,自然顿悟.这东西,靠文字,确实没法给你再解释了.在面前,给你现场写代码解释,估计才有可能给把你说懂.追问:写一个公司的员工管理系统模块包括行政(name/id/sal/car)/技术(name/id/sal/project/项目提成)/管理(name/id/sal/position/分红)写一个 EmpUtil类提供方法如下:开除员工计算收入涉及知识:除了重载,应该都用到,所有类必须封装唉老师也是这么说的,我现在在达内培训这个是老师留的作业像这个题大体框架是什么?有用到继承吗?还是必须用继承?还是也可以不用继承? name id sal(工资) EmpUtil这个可以放在一起,之后其他三个调用或者继承 EmpUtil???要是你的话框架应该是怎样的?回答:首先分析实体对象.行政技术管理他们都是什么?职员他们都有共同的属性. name id sal好了明显抽象一个父类出来职员属性 name id sal行政属性 car继承职员技术属性 project项目提成继承职员管理position分红继承职员一共四个类(行政技术管理三个实体类+一个职员父类)(一个静态static工具类EmpUtil类两个静态方法开除员工和计算收入)

java某个类既要继承又要实现接口,为什么继承要写在前面啊

因为java在设计的时候所有的类都是继承于Object类,而且java的继承是单继承的,不像C++可以都继承。而接口弥补了单继承的不足!

就像楼上说的:如果lz你extends女生,那就说明你是个女的,如果你不继承女生那你就不是女的。你只是个对象。但是并不是所有女生都会有生育功能,也许生育功能需要用接口实现。实现了生育方法的女人才能生小baby,没实现的就生不了!

例子有点粗糙,自己理解下就ok了!

JAVA中什么是继承

继承在本职上是特殊一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。

1.Java继承的语法格式:

Java继承的关键字是:extends

public class子类名 extends父类名{...}

如: public class UNStudent extends Student{...}注:1.子类又称超类,拓展类;父类又称基类。

2.Java中类的继承只能是单继承(单根继承),即一个类只能继承一个父类,但是一个类可以由多个类来继承它。

3.Java会给每一个没有设置父类的类,自动添加一个父类就是Object。

扩展资料:

一、子类继承父类的结果

1.子类继承父类后,继承到了父类所有的属性和方法。注:是所有。

2.子类可调用的方法也要看情况而定:

子类和父类在同一个包下时“子类和子类的对象”可以调用父类的默认的,受保护的,公有的属性以及方法。

子类和父类在不同的包下时,在子类中可以调用受保护的,公有的属性以及方法,而子类的对象可以调用受保护的,公有的属性以及方法。

二、方法的重写

1.当子类和父类都有某种方法,而子类的方法更加要求细致,或者实现功能不同,就需要方法的重写。

2.重写条件

①必须要存在继承关系;只有继承之间的关系才能有方法的重写

②方法的返回值类型,方法名,参数个数,参数类型,参数顺序,必须要完全一致;

如:父类中方法 public void play(int n; String s){方法体1...}

重写后的子类方法public void play(int n; String s){方法体2...}

3.子类重写方法时的访问修饰符可以大于或者等于父类方法的访问修饰符。

4.重写后的方法会被优先调用。

三、自动转型

自动转型的实现要求有继承关系

格式如下:父类名对象名= new子类构造方法;

如:Student stu= new UNStudent;

而强制转型格式如下:子类名对象名=(子类名)父类对象名

如:UNStudent un=(Student)stu;

自动转型可以拓宽方法的作用访问域

在使用自动转型后,子类自己定义的方法是不能在自动转型后执行;

原因是因为Java的编译机制,它会优先判断父类中是否存在该方法,如果存在则通过编译,如果不存在则报错。

第二种自动转型:转型后只需要不同类的不同对象调用想吐的方法,很方便!

/**访问修饰符返回值数据类型方法名(父类类型参数名,...){

调用方法。

}

父类名对象名= new子类名;

子类名对象名= new子类名;

方法名(对象名);

*/

比如拿到驾驶证为A2的人,可以驾驶重型货车,当然也可以驾驶大型货车,中型货车,小型货车,小客车,小轿车,摩托车...可以选择第二种自动转型的方法,便于调用同一个方法。

自动转型好处:1.减少冗余代码;2.在方法设置参数时,扩大访问范围。

四、多态

多态是由方法重载,继承,方法重写,自动转型等技术的组合。

五、为什么需要继承?

1.提高代码的重用性。

2.提高程序的扩展性。

参考资料:

JAVA继承总结

关于本次java继承中执行顺序是什么和java某个类既要继承又要实现接口,为什么继承要写在前面啊的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

是java 什么运算符(什么是java运算符)短尾蝮