子类对象调用父类方法算不算重载?
没有重写~另外能说说重载有哪些形式吗?不嫌烦的话再解释一下多态有哪些表现形式。3Q以上问题基于JAVA语言...
没有重写~
另外能说说重载有哪些形式吗? 不嫌烦的话再解释一下多态有哪些表现形式。 3Q 以上问题基于JAVA语言 展开
另外能说说重载有哪些形式吗? 不嫌烦的话再解释一下多态有哪些表现形式。 3Q 以上问题基于JAVA语言 展开
4个回答
展开全部
首先说一点 java是面向对象编程
那什么是面向对象
三大特性:封装(把属性和方法都放到一个类中,然后类创建对象,这样对象就集成了属性和方法)、继承(你问的问题,下面详细说明)、多态(下面也详细说一下)
继承:需要注意四点
子类拥有父类的所有属性
子类中继承父类中所有的属性,在父类中声明的属性在子类内部可以直接调用。
说明:如果访问控制符限制则无法访问。
子类拥有父类的所有方法
子类中继承父类中所有的方法,在父类中声明的方法在子类内部可以直接调用。
说明:如果访问控制符限制则无法访问。
子类不拥有父类的构造方法
子类不继承父类的构造方法,如果需要在子类内部使用和父类传入参数一样的构造方法,则需要在子类内部重新声明这些构造方法。
子类类型是父类类型
子类类型的对象可以自动转换为父类类型的对象,父类类型的对象则需要强制转换为子类的对象,转换的语法个基本数据类型转换的语法相同。
方法重写要求有三点:
1. 在子类中可以根据需要对从基类中继承来的方法进行重写
2. 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
3. 重写方法不能使用比被重写方法更严格的访问权限
所以你直接调用父类方法,其实子类自己也有,没有自己重新写一个,当然不算重写,另外你说的重载,说明一下两者分别:
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法
再说说多态:
需要三点:要有继承、要有重写、父类引用指向子类方法
多态性依赖继承特性,可以把多态理解为继承性的扩展或者深入。
在这里把多态性分为两方面来进行介绍,对象类型的多态和对象方法的多态。
对象类型多态
对象类型的多态是指声明对象的类型不是对象的真正类型,而对象的真正类型由创建对象时调用的构造方法进行决定。按照继承性的说明,子类的对象也是父类类型的对象,可以进行直接赋值。
对象方法多态
对象方法的多态基于方法的覆盖,也就是该对象调用的方法具体是子类的方法还是父类的方法,由创建对象时使用的构造方法决定,而不是由声明对象时声明的类型决定。
因为多态涉及太多,所以建议你仔细看一下详细材料才好
那什么是面向对象
三大特性:封装(把属性和方法都放到一个类中,然后类创建对象,这样对象就集成了属性和方法)、继承(你问的问题,下面详细说明)、多态(下面也详细说一下)
继承:需要注意四点
子类拥有父类的所有属性
子类中继承父类中所有的属性,在父类中声明的属性在子类内部可以直接调用。
说明:如果访问控制符限制则无法访问。
子类拥有父类的所有方法
子类中继承父类中所有的方法,在父类中声明的方法在子类内部可以直接调用。
说明:如果访问控制符限制则无法访问。
子类不拥有父类的构造方法
子类不继承父类的构造方法,如果需要在子类内部使用和父类传入参数一样的构造方法,则需要在子类内部重新声明这些构造方法。
子类类型是父类类型
子类类型的对象可以自动转换为父类类型的对象,父类类型的对象则需要强制转换为子类的对象,转换的语法个基本数据类型转换的语法相同。
方法重写要求有三点:
1. 在子类中可以根据需要对从基类中继承来的方法进行重写
2. 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
3. 重写方法不能使用比被重写方法更严格的访问权限
所以你直接调用父类方法,其实子类自己也有,没有自己重新写一个,当然不算重写,另外你说的重载,说明一下两者分别:
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法
再说说多态:
需要三点:要有继承、要有重写、父类引用指向子类方法
多态性依赖继承特性,可以把多态理解为继承性的扩展或者深入。
在这里把多态性分为两方面来进行介绍,对象类型的多态和对象方法的多态。
对象类型多态
对象类型的多态是指声明对象的类型不是对象的真正类型,而对象的真正类型由创建对象时调用的构造方法进行决定。按照继承性的说明,子类的对象也是父类类型的对象,可以进行直接赋值。
对象方法多态
对象方法的多态基于方法的覆盖,也就是该对象调用的方法具体是子类的方法还是父类的方法,由创建对象时使用的构造方法决定,而不是由声明对象时声明的类型决定。
因为多态涉及太多,所以建议你仔细看一下详细材料才好
展开全部
重载和重写都是对于两个方法而言的。重载和子类、父类没有关系。
下面是我的笔记,你看看
重载和重写的区别?
重载:方法名相同,参数不同(参数类型或者长度)
重载和修饰符和返回类型无关。
一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。
二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。
重写:两同两大一小(规则)
两同:方法名相同参数类型相同
两小:返回值类型抛出的异常要小
一大:访问控制修饰符大
(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。
(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。
(3)只有实例方法才能被重写,超类中的final方法不能被重写。
(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。
下面是我的笔记,你看看
重载和重写的区别?
重载:方法名相同,参数不同(参数类型或者长度)
重载和修饰符和返回类型无关。
一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。
二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。
重写:两同两大一小(规则)
两同:方法名相同参数类型相同
两小:返回值类型抛出的异常要小
一大:访问控制修饰符大
(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。
(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。
(3)只有实例方法才能被重写,超类中的final方法不能被重写。
(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class A
{
public A(){.........}
public A(string name,int age){..........}
public A(int age,string name) { } //构造函数重载
public int abc(){ }
public string abc(string name ,int age){ }
public string abc( int age,string name){ } //方法重载
}
//方法名字相同,参数不同(顺序,类型) 叫做 重载
{
public A(){.........}
public A(string name,int age){..........}
public A(int age,string name) { } //构造函数重载
public int abc(){ }
public string abc(string name ,int age){ }
public string abc( int age,string name){ } //方法重载
}
//方法名字相同,参数不同(顺序,类型) 叫做 重载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是重载,当方法名相同且方法的参数(参数的个数,参数的类型,参数的顺序)不同,叫做重载,重载对方法的返回值没有要求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询