首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

5.1 子类

5.1 子类   子类拥有的功能更加丰富。   在本例中,Manager类比Employee封装了更多数据,拥有更多功能。   ...在通过扩展定义子类时候,仅需要指出子类不同之处,因此,会将通用方法放在中,而将具有特殊用途方法放在子类中,这种将通用功能放在方法,在面向对象程序设计中十分普遍。   ...可以将一个子类变量赋给一个变量,但不能将一个变量赋给一个子类变量。 5.1.3 动态绑定   调用方法过程可以分解为:   (1)编译器查看对象声明类型和方法名。...一个子类引用赋给一个变量,编译器是允许,但是将一个变量引用赋给一个子类变量,必须进行类型转换,这样才能够通过运行时检查。   ...学生和雇员都有姓名属性,因此可以将getName方法放置在继承关系较高层次通用中。   现在,再增加一个getDescription方法,它可以返回对一个人简短描述。

1K90

Java子类和父调用关系

3、每个直接或间接是Object子类,Object只有一个无参构造方法。...3、每个直接或间接是Object子类,Object只有一个无参构造方法。   4、编译器会在每个构造方法第一行隐式添加父默认无参构造器,即添加super()。   ...Must explicitly invoke another constructo   因为父定义了一个带参数构造器,因此编译器不会添加默认无参构造方法,但是因为在子类构造器中没有显式调用父某个构造方法...Teacher() {   super(10);   }   }   这样,在子类构造器中显式调用了父某个构造器,所以编译器不会自动添加super()方法。   ...构造器访问修饰符:   一般可以用public,protected,default和private修饰,但是对于private,子类是无法调用该类构造器

94730
您找到你想要的搜索结果了吗?
是的
没有找到

java对象关系区别

是具备某些共同特征实体集合,它是一种抽象数据类型,它是对所具有相同特征实体抽象。在面向对象程序设计语言中,是对一“事物”属性行为抽象。   对象:该类事物实例。...在Java中通过new进行创建。是一个真实世界中实体,对象实体是一一对应关系,意思就是现实世界每一个实体都是一个对象,所以对象是一个具体概念。...     1,是一个抽象概念,它不存在于现实中时间/空间里,只是为所有的对象定义了抽象属性行为。...具体是对象模板,对象是实例。只有通过对象才可以使用,而在开发之中应该先产生,之后再产生对象。不能直接使用,对象是可以直接使用。  在Java中定义,使用关键字class完成。...,然后实例化对象:  名称 对象名称 = null ; 对象名称 = new 名称 () ;   引用数据类型基本数据类型最大不同在于:引用数据类型需要内存分配和使用。

68920

Java子类之间对象转换(说明继承)

参考链接: 父子类Java中具有相同数据成员 在使用Java多态机制时,常常使用一个特性便是子类和父之间对象转换。...向上转换比较直观,总是能够将一个子类实例转换为一个父对象,从继承链角度,这个特性很容易理解:继承是一种“是一种”关系,从父派生出子类,我们都能理解为,子类总是父一个实例。...因此,从子类向父转换不需要什么限制,只需直接将子类实例赋值给父变量即可,这也是Java多态实现机制。...这就要考虑到,在继承关系中,有一些方法是不适合由父定义并由子类继承并重写,有些方法是子类特有的,不应该通过继承得到,且子类可能也会有自己特有的成员变量,那么在使用多态机制时候,若我们要通过父类型变量使用到这些子类特有的方法和属性的话...一、父引用指向子类对象时 1、若子类覆盖了某方法,则父引用调用子类重新定义新方法 2、若子类未覆盖某方法,则父引用调用父本身旧方法 3、若子类覆盖了某属性,但父引用仍调用父本身旧属性

3.5K20

C#基础知识—父子类关系

virtual Begin-----------"); //=>new 关键字,就是独立子类相同方法,转化为谁后调用就是谁。...- -------(2)、override关键字virtual 关键字 Begin----------- 初始化父构造函数 初始化子类构造函数 我是子类Test1 初始化父构造函数 初始化子类构造函数...我是子类Test1 -------END----------- -------(3)、new 关键字 Begin----------- 初始化父构造函数 初始化子类构造函数 我是基Test2...初始化父构造函数 初始化子类构造函数 我是子类Test2 -------END----------- -------(4)、new 关键字virtual Begin----------- 初始化父构造函数...初始化子类构造函数 我是基Test3 初始化父构造函数 初始化子类构造函数 我是子类Test3 -------END-----------

1.9K10

Java强制转换子类原则

最近,微信群友在讨论子类转换问题,其实不难,给大家用实例来说明一下就很明了了。 我们知道Java子类转换成父是没有任何问题,那父可以转换成子类吗?...Fruit fruit1 = new Fruit(); Apple apple1 = new Apple(); apple1 = (Apple) fruit1; // java.lang.ClassCastException...} static class Fruit { } static class Apple extends Fruit { } } 结果是: test1:报转异常...所以,想让父强制转换成子类,不是没有可能,除非父子类构造出来实例,不然是不能强转。 为什么呢?...如上代码,如果父实例出来对象是Orange,Orange当然不能强制转成Apple,所以说父只有该子类对应实例才能强转。

2.2K80

java引用指向子类对象好处_java子类调用父类属性

方法重写、重载动态连接构成多态性 Java之所以引入多态概念,原因之一就它在继承上问题和C++不同,后者允许多继承,这确实给其带来了非常强大功能,但是复杂继承关系也给C++开发者带来了更大麻烦...,为了规避风险,Java只允许单继承,势必在功能上有很大限制,所以,Java引入多态性概念以弥补这点不足,此外,抽象和接口也是解决单继承规定限制重要手段.同时,多态也是面向对象编程精髓所在....子类覆盖父实现多态: 如果子类继承是一个抽象,虽然抽象不能通过new操作符实例化,但是可以创建抽象对象引用指向子类对象,以实现运行时多态性,不过,抽象子类必须覆盖实现所有的抽象方法...因为子类是对父一个改进和扩充,所以一般子类在功能上较父更强大,属性较父更独特: 定义一个父类型引用指向一个子类对象既可以使用子类强大功能,又可以抽取父共性。...对子类static问题 ——没覆盖也没继承,子类存有指向父引用 对于private ——该方法或属性只能在该类内使用 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

1.1K20

Java子类和父构造函数?

参考链接: Java继承和构造函数 这篇文章总结了关于Java构造常见​​问题。  1)为什么创建一个子类对象要也需要调用父构造函数? ...如果没有,编译器会插入调用父构造语句。这就是为什么在创建子类对象时父构造函数会被调用。  这里没有创建两个对象,只有一个子对象。...这是上边Super发生情况。  子类构造函数,无论有参构造还是无参构造,将会调用父默认无参构造函数。...3)子类显式调用父构造函数  下面的代码是正常:    子类(Sub)构造函数显式地调用父(Super)中带参构造参数。如果父中定义了相对应构造函数,那将会被正常良好调用。  ...4)规则 简而言之,规则是:子类构造函数必须调用父构造函数,无论隐式调用还是显式调用,无论哪种方式,被调用构造函数必须得先被定义。

2K20

总结Java关系

什么是关系关系是指事物之间存在单向或双向作用或者影响状态。其中之间要么有关系要么没关系,感觉这句话有点说很无耻,谁都知道,但是其中奥妙在于很难确定之间是否有关系。...Java关系6种情况 继承:extends【is-a】 实现:implements【can do】 组合:是成员变量【contain-a】 聚合:是成员变量【is-a】 依赖:是除了组合聚合外单向弱关系...但是在设计过程中要注意组合、聚合、依赖和关联这四个区别。 继承: 继承关系包括子类和父、子接口和父接口之间两种继承关系。用空心三角形和实线表示这种继承关系。...实现: 和接口之间关系,用空心三角形和虚线表示。 依赖: A会用到B,这种关系具有偶然性,临时性。但B变化会影响A。这种在代码中体现为:A方法中参数包含了B。...它同样体现整体部分关系,但这种整体和部分是不可分割,他们具有相同生命周期。 和聚合关系相比:这种部分和整体关系表现为,整体包含该部分,但也包含其他部分,其他部分和该部分并不相同。

64820

Java加载机制---父子类多态调用

null 1) 上面程序最大难点,也是最重要地方就是:在父构造函数中调用了虚函数,并且这个函数被子类重载了 2) 继承时候,子类有着同名属性和同名方法,关于同名属性初始化过程也是必须要了解...上面的程序就很容易理解为什么输出是null了 Java机制里面有这样一个原则就是:如果父存在,子类可以不存在;如果子类存在,父必须存在; 怎么理解上面的这句话呢,可以用实际例子来说明,一个人结婚了但是没有小孩...,对应着前半句意思;如果他生了小孩,那么这个小孩子是一定有父亲Java代码中这样看,如果我们实例化一个子类,必须先构造这个子类,否则是错误。...Java子类加载机制是第三个需要理解地方: 1)相关加载机制还是跟  上面第二点相似,只是在子类初始化时候必须先去初始化父 2)只有 等Java机制给子类和所有的父都分配了内存空间之后...baseName分配地址,地址变量指向null; 4)由于父不需要再也没有了,那么这个时候父子类内存分配都做完了,接下来就是需要为  属性进行初始化工作 5)首先是给父baseName

2.7K40

Java基础 【之间关系

依赖关系表示一个依赖于另一个定义,一个方法操纵另一个对象。 一般而言,依赖关系JAVA中体现为局域变量、方法形参,或者对静态方法调用。 ?...它使一个知道另一个属性和方法。 对于两个相对独立对象,当一个对象实例另一个对象一些特定实例存在固定对应关系时,这两个对象之间为关联关系。 关联可以是双向,也可以是单向。...在JAVA中,关联关系一般使用成员变量来实现。 在JAVA中,单向关联表现为:A当中使用了B,其中B是作为A成员变量。       ...关联关系所涉及两个是处在同一层次上,而在聚合关系中,两个是处在不平等层次上。在JAVA中,聚合关系一般使用成员变量来实现,聚合和关联关系两者代码表现是相同,仅仅是在语义上有所区别。 ?...表示(或者接口接口)之间父子关系。一般而言,如果类A扩展B,A不但包含从B继承方法,还会拥有一些额外功能。在JAVA中,用关键字extends表示继承关系 ?

1.3K20

面向对象程序设计中“”和“子类”概念来历

众所周知,在面向对象程序设计中,子类中继承数据成员和成员方法,然后在此基础上再根据实际需要进行扩展并增加属于子类数据成员和成员方法。...也就是说,子类对象比对象具有更加丰富属性,或者具有更多行为。或者说,子类功能比功能更加强大。那么为什么不把子类叫做呢? ?...实际上,子类概念来自于集合论,借鉴了集和子集概念。子集中所有元素都属于其集,而集中并不是所有元素都属于子集。...同理,在面向对象程序设计中,所有子类对象都属于其实例,而反过来则是不成立。 ?

1.4K40

JAVA静态方法能否被子类重写?

静态:   在编译时所分配内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间,在实例化之前这个方法就已经存在于内存,跟对象没什么关系。...子类中如果定义了相同名称静态方法,并不会重写,而应该是在内存中又分配了一块给子类静态方法,没有重写这一说,只是单纯名字重复了。..."); } public void method() { System.out.println("子类一般方法"); } } 输出结果是: 父静态方法...子类一般方法   当父引用指向子类对象,只会调用父静态方法,此行为并不具有多态性!...只能说明子类能继承父静态方法!静态方法对象无关!

2.2K30

设计模式——图以及之间关系

图一般是三行结构: 名称 属性:格式(可见性 名称:类型[=缺省值]) 方法:格式(可见性 名称(参数列表)[返回类型]) 注:在Visio中图中使用是C#数据类型,Java略有差别...二、之间关系 之间主要有6种关系,包括依赖,关联,聚合,组合,继承,实现。他们耦合度是一次增强。...:" + food.getName()); } } 2、关联(Association) 关联主要体现是一种对应关系,两个相对独立对象,当一个对象实例另一个对象实例存在固定对应关系时,这两个对象之间为关联关系...class Bird{ private Wing wing; public People(){ wing = new Wing(); } 5、继承(Generalization)    继承表示之间或者接口接口之间父子关系...,在java中使用是extends关键字。

1.3K40
领券