java中子类和子类型的区别,Java的类的继承中,子类与非子类是什么?有什么区别?

2020-11-24 14:37:36 字数 6075 阅读 1291

1楼:宝贝我想了

子类化(subclass) 和 子类型化(subtype)的区别[原创,未经作者许可不得**]

subtype具有更加严格的要求,就是父类的任何子类都可以在运行时可无缝的代替父类的工作,子类的接口具有更加相比父类更加强的前置条件,父类的接口在子类中得到继承,并且不得在子类中修改父类方法的签名.子类型化的好处是实现依赖倒置,参见参考读物的bicycle一图,

subclass主要目的为了更加方便的重用,通常不需要符合is-a的要求,如果采用组合,那么必须手写大量接口,然后delegate给这个成员变量,如果父类很大的话,使用组合需要大量的工作量,而采用继承则方便很多,另外通过继承可以访问protected的成员及其方法,这也是组合所不具备的。

java的类的继承中,子类与非子类是什么?有什么区别?

2楼:匿名用户

类a继承了类b,类a就是类b的子类,没有非子类的说法

java中,子类是否允许有一个方法和父类方法名字相同,而参数类型不同 为什么

3楼:匿名用户

java的重写和重载是两种在java中经常提到的两组概念,它们在各个方面都有着很大的不同,下面详细介绍你要了解的区别。

java的多态机制

即重写,重写主要用于子类和父类之间,在父类中定义了一个方法,同时在子类中对这个方法进行重写,实现子类行为的特殊化,例如:

class animal

}class tiger extends animal

}子类中的eat方法即对父类的eat方法实现了重写,重写最常见的例子就是下面的声明:

animal some=new tiger();

关于重写,遵循以下的规则:

(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。

(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。

(3)只有实例方法才能被重写,超类中的final方法不能被重写。

(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。

(5)注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法。

(6)尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会出项编译错误。

java的重载机制:

重载的实质:在一个类中使用签名相同的多个方法。

按照范围,可以将重载分为在一个类中重载,和在子类和父类中重载。现分别解释如下:

1.在一个类中定义多个具有相同签名的方法,这些方法必须具有不同的参数列表,比如一个类的构造函数。

2.在父类和子类中,子类由于继承而拥有了父类的某些方法,此时在子类再定义具有相同签名的方法(必须具有不同的参数列表),这个地方很容易和重写相混淆,因此千万注意。

重载的规则主要记住亮点:

一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。

二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。

注意下面的一种情况:(重写和重载的混合)

class useanimal

void dostuff(tiger sa){}

public static void main(string args)

}此时,调用的方法dostuff的animal版本,因为调用重载方法是在编译时决定的,an的声明类型是animal。所以调用animal版本。

始终注意一点:重载的判断始终是在编译时决定

4楼:咔叽咯浮

函数名字相同参数不同叫做函数重载。

子类继承了父类的某个方法,然后在子类里面实现该函数的一个重载函数,这个是完全没问题的,就算两个函数都在同一个类里面也没问题。

例如:fun(int a)

fun(string a)

这两个函数名字相同,参数的类型不同,就叫做函数重载了.

就算其中某个函数是子类从父类继承过来的,也属于函数重载.

推荐你先看下函数重载的概念.

5楼:手机用户

名字相同,而参数类型相同叫重写,也就是子类的对象在使用该方法的时候执行的就是子类中重写的这个方法

名字相同,而参数类型不同叫重载,它们是不同的方法

6楼:匿名用户

简单来说!是重载和重写!重载时方法名字一样但是

参数的类型不一样!重写是方法名一样,参数也一样!只有这两种!

你从父类继承或者实现接口都可能会用到重写这个概念!因为有时父类的方法不一定适合子类去用!这个时候就要用到重写方法!

改变方法的内容一边更好的去使子类去运行!而重载则是当你想要调用一个方法时发现需要用到其他的变量但是这个方法却没有给你提供,这是你就要用到重载去增加你需要的变量!以便更方便的去调用这个方法!

7楼:匿名用户

说白了就是java语言的特征 多态

8楼:摆渡大管家

这个是重写,子类重写了父类的方法,,父类中的方法并不一是子类所需要的,,所以就重写了一下。。

9楼:匿名用户

这种情况不属于重写,属于子类声明的新方法,是完全可以的。

java的子类和父类中的super、this的区别?

10楼:匿名用户

在java类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,new这个子类的实例对象后。使用super来引用父类对象,使用this引用当前对象。

举例:publicclassf

}publicclasskextendsfpublicvoidk2()}

11楼:匿名用户

没有重写的话就没有什么区别。

12楼:匿名用户

默认是 this.***

13楼:帖菲支琬

当有相同的属性或者方法是this子类表示调用自己的属性或者方法,super调用父类的属性或者方法。当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类的属性或者方法

在java 中,什么叫父类,什么叫子类

14楼:别样的风采是我

父类和子类,就例如:老子和儿子,有着父子关系。而这里指的父子关系,其实也就是一种包含关系。

打个比方,在我们现实生活中,学生student是一个很大的概念,而u_student大学生是属于学生中的一种,这里的学生即为父类,大学生即为子类。

父类和子类区别在哪?

学生和大学生都会有学习study这个方法,但是大学生还会有自己特有的study方法,两者还是有一定区别的,大学生的学习相较于其他学生来说,是更自由的。假如现在已经有一个学生(student)类,然后我还要写一个大学生(u_student)类,然后大学生ustudent类里有很多方法和student里的方法都相同,但是还是有一小部分不同,怎样解决呢?难道还要重新写一个大学生类,并且重复敲一遍和学生类中一样的**吗?

那样浪费了时间和精力,并且浪费了存储空间,是很不划算的。所以,就有了“继承”。

子类继承父类,就是子类能引用父类中的某些东西。继承的关键字是extends,

例如:public class student(){}//父类

public class u_student extends student(){}//子类继承了父类

当子类和父类用一个同名方法,但是子类的实现却和父类不同,用到"方法重写"。

重写是指方法定义相同,但是实现不同,存在于父子类之间。

例如://父类

public class student()

}//子类

public class ustudent extends student()}

15楼:衅文惠陈魄

用很简单的知话说就是:被继承的道类叫做父类,继承的类叫做子类;例如;

clss

aclass

bextends

a那么回a就被称作是父类,答b就是a的子类。

16楼:滑映寒愈霁

父类对象指向子类对象,是面向对象的一个重要的特性,叫做多态性、

多态性在面试和考试时经常涉及到的

下面给你一个简单的例子

package

first;

class

graphics

}class

rect

extends

graphics

}class

circle

extends

graphics

}public

class

graphicstest

public

static

void

main(string

args)

}你拷贝这个程序看一下运行结果

就知道了

java中,在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?

17楼:手机用户

java的重写和重载是两种在java中经常提到的两组概念,它们在各个方面都有着很大的不同,下面详细介绍你要了解的区别。

java的多态机制

即重写,重写主要用于子类和父类之间,在父类中定义了一个方法,同时在子类中对这个方法进行重写,实现子类行为的特殊化,例如:

class animal

}class tiger extends animal

}子类中的eat方法即对父类的eat方法实现了重写,重写最常见的例子就是下面的声明:

animal some=new tiger();

关于重写,遵循以下的规则:

(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。

(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。

(3)只有实例方法才能被重写,超类中的final方法不能被重写。

(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。

(5)注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法。

(6)尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会出项编译错误。

java的重载机制:

重载的实质:在一个类中使用签名相同的多个方法。

按照范围,可以将重载分为在一个类中重载,和在子类和父类中重载。现分别解释如下:

1.在一个类中定义多个具有相同签名的方法,这些方法必须具有不同的参数列表,比如一个类的构造函数。

2.在父类和子类中,子类由于继承而拥有了父类的某些方法,此时在子类再定义具有相同签名的方法(必须具有不同的参数列表),这个地方很容易和重写相混淆,因此千万注意。

重载的规则主要记住亮点:

一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。

二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。

注意下面的一种情况:(重写和重载的混合)

class useanimal

void dostuff(tiger sa){}

public static void main(string args)

}此时,调用的方法dostuff的animal版本,因为调用重载方法是在编译时决定的,an的声明类型是animal。所以调用animal版本。

始终注意一点:重载的判断始终是在编译时决定希望采纳!

java子类继承父类的好处有哪些

1楼 匿名用户 第一,让你少写 父亲类写过的东西,比如变量方法,你可以直接用,不用改了吧。 第二,让你好维护程序 在没有继承的时候,如果你想添加功能,你必须改动源 ,但是如果你没有呢,怎么办?你可以选择继承,呵呵,还有你的这个类体系都可以进行多态,写成通用的程序,好处多多啊。仔细体会。 第三,让你容...

课程与教学有什么区别,课程与教学论和教育学的主要区别是什么

1楼 冰橙大本营 目前从科学视角看,课程论与教学论应是教育科学下属的两个独立分支科学。因为二者研究对象及构筑理论体系的相关概念不相同。前者研究各种形式的课业及进程,后者研究教与学 前者涉及课程研制 课程标准 课程管理 课程评价等核心概念。 而后者涉及教学目的 内容 方法 过程 组织形式及教学评价等核...

感觉个知觉的区别与联系是什么啊,感觉和知觉有什么区别和联系?研究它们有什么意义?

1楼 机器亮 知觉是肢体上可以碰到的,感觉是思想脑子里的 感觉和知觉有什么区别和联系?研究它们有什么意义? 2楼 感觉和知觉既相互联系又相互区别 第一,感觉是对事物个别属性的反映。知觉是对事物整体的反映。 第二,感觉的产生依赖于客观事物的物理属性,相同的刺激会引起相同的感觉。知觉不仅依赖于它的物理特...