java 子类型_“Java子类型”和“真实子类型”之间的区别是什么?

java子类型是扩展另一个类(甚至实现接口)的任何类。真正的子类型不是语言特定的:

真正的子类型总是可以替代超类型。

“超类型保证的任何财产必须由子类型(真正的子类型)保证”

http://www.cs.washington.edu/education/courses/cse331/10au/lectures/subtypingexamples.pdf

该链接包含一个非常有启发性的示例。假设您有一个存储值x和y的Point2D类。您现在可以创建子类型Point3D并添加值z。如果不覆盖任何方法并使用equals和hashcode方法,则可以随时用Point3D实例替换Point2D实例。

这当然是一个简单的例子。有人可能会争论为什么不只有Point3D。也许这些类都提供了一些方法,可以通过分成类来更好地被认为属于2D或3D领域。在这种情况下,它可能纯粹是一个设计决定。

class Point2D {

int x;

int y;

}

//true subtype

class Point3D extends Point2D {

int z;

}如果您使用Person类然后具有两个子类型(Employee和Customer),则可能会出现更复杂的示例。员工和客户都提供与人员相同的所有字段和方法。

class Person {

String name;

Date birthday;

@Override

public boolean equals(Object o){

//simplified equals implementation, this does not fulfill equals contract!

return name.equals(((Person)o).name);

}

}

//true subtype, same behaviour

class Employee extends Person {

long departmentId;

}

//not a true subtype, different behaviour -> equals

class Customer extends Person {

long customerId;

Date lastContact;

String city;

public boolean equals(Object o){

//simplified equals implementation, this does not fulfill equals contract!

return customerId.equals(((Customer)o).customerId);

}

}在此示例中,Employee将是Person的真实子类型。但是,Customer不是真正的子类型,因为equals实现不同(并且可能也是hashCode())并且它的行为不会相同,并且可能无法始终替换Person对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JS中的类型和父类型是指原型继承中的概念。在JS中,每个对象都有一个原型对象,它定义了对象的属性和方法。类型可以通过原型继承来继承父类型的属性和方法,从而实现代码复用。类型可以通过原型链访问到父类型的属性和方法。在JS中,可以使用构造函数和原型来定义类型类型的原型对象。类型的原型对象可以通过Object.create()方法来创建一个父类型的原型对象的副本,从而实现原型继承。 ### 回答2: 在JavaScript中,类型和父类型是面向对象编程中的两个关键概念。 父类型(也称为基类、超类或抽象类)是指被其他类型所继承的类型。它是具有通用特征或共同行为的类型。父类型通常包含一些属性和方法,用于定义其类型所共有的基本行为。 类型是指继承自父类型类型,也被称为派生类或衍生类。类型可以继承父类型的属性和方法,并且可以添加自己特定的属性和方法,以满足其独特的需求。通过继承父类型类型能够重用父类型已经定义好的行为,从而提高代码的可维护性和复用性。 在JavaScript中,实现类型和父类型的关系,可以通过原型链来实现。每个对象都有一个原型对象,它可以作为该对象的父类型类型通过将父类型的实例作为自己的原型对象,从而继承父类型的属性和方法。当类型访问一个属性或方法时,JavaScript会首先在类型自身查找,然后再到父类型的原型对象中查找,直到找到对应的属性或方法。 通过类型和父类型的概念,JavaScript可以实现面向对象编程的特性,例如封装、继承和多态。它使得代码可以更加模块化和可扩展,同时提高了代码的重用性和可维护性。 ### 回答3: 在JavaScript中,一种对象可以是另一种对象的类型或父类型类型是指可以继承自父类型的属性和方法的对象。而父类型是指被类型继承的对象。 在JavaScript中,对象的类型可以通过使用原型链继承来实现。原型链是指一个对象可以通过继承另一个对象的属性和方法来扩展自己。一个对象的原型对象可以被认为是其父类型,而该对象本身则可以被认为是其类型类型可以继承父类型的属性和方法,并可以添加或重写这些属性和方法。类型可以访问父类型的属性和方法,也可以通过自己的方法来扩展或覆盖父类型的行为。 通过使用类型和父类型的概念,可以实现代码的重用和组织。在JavaScript中,可以通过创建父类型的构造函数和原型对象,然后使用类型的构造函数和原型对象来继承父类型的属性和方法。这样可以避免重复编写相同的代码,并能够实现代码的模块化和灵活性。 总之,JavaScript的类型和父类型是指对象之间的继承关系。类型可以继承父类型的属性和方法,并可根据需要进行扩展和重写。通过使用类型和父类型的概念,可以实现代码的重用和组织,从而提高代码的效率和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值