首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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】基础21:顶层Object

今天要学的ObjectJava里面,就好比是和亚当夏娃一样的存在。 只不过神话终归只是神话,是虚无缥缈的,但是计算机里面,Object是真真实实存在的。...②getSuperClass():得到名。 ③Class是指java.lang这是Java里面的一个包,名是Object。 所以数组的也就是Object.。...如果一个没有特别指定,那么默认继承自Object。 既然Object是顶层,那么按照继承的规则:子类可以调用的方法。 Object中的方法,所有都可以使用。...前面学过String,知道它打印出来就是一串字符串,而不是一串地址,怎么做到的? 因为它将方法重写了。...下图为String的toString()方法 String是Object,它将的toString方法重写了。

71620

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

方法的重写、重载与动态连接构成多态性 Java之所以引入多态的概念,原因之一就它在的继承上的问题和C++不同,后者允许多继承,这确实给其带来了非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦...,为了规避风险,Java只允许单继承,势必在功能上有很大的限制,所以,Java引入多态性的概念以弥补这点不足,此外,抽象和接口也是解决单继承规定限制的重要手段.同时,多态也是面向对象编程的精髓所在....2.多态的体现 1 接口 和 实现接口并覆盖接口中同一方法的几不同的体现的 2 和 继承并覆盖中同一方法的几个不同子类实现的....father.hitChild(); father = new Son3(); father.hitChild(); } } Jetbrains全家桶1年46,售后保障稳定 Java...因为子类是对的一个改进和扩充,所以一般子类在功能上较更强大,属性较更独特: 定义一个类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取的共性。

1.1K20

java加载的过程 _加载机制原理

最后JVM对进行初始化,包括: 1)如果类存在直接的并且这个还没有被初始化,那么就先初始化; 2)如果类中存在初始化语句,就依次执行这些初始化语句。...2、元数据验证 第二阶段是对字节码描述的信息进行语义分析,以保证其描述的信息符合Java语言规范的要求,这个阶段可能包括的验证点如下: 这个是否有(除了 java.lang.0bject之外,所有的都应当有...) 这个是否继承了不允许被继承的(被finaI修饰的) 如果这个不是抽象, 是否实現了其父或接口之中要求实现的所有方法 中的字段、 方法是否与产生了矛盾(例如覆盖了的final...()方法的肯定是 java,lang.Object 由于的()方法先执行,也就意味着中定义的静态语句块要优先于子类的变量赋值操作 ()方法对于或接口来说并不是必须的...,程序先加载并连接该类; 假如该类的直接还没有被初始化,则先初始化其直接; 假如中有初始化语句,则系统依次执行这些初始化语句 当执行第二步时,系统对直接的初始化也遵循此1、2、3步骤,如果该直接又有直接

66220

——曼德拉 今天在项目中遇到一个小坑可把我吓坏了,记录一下,以免再犯 首先还原下场景吧,我们写个 package com.ruben.pojo; import lombok.Data; /**...我们再写一个继承一下它,这个我们用作和数据库映射 package com.ruben.pojo.dataObject;/** * @ClassName: UserDataObject * @Date...com.baomidou.mybatisplus.annotation.TableName; import com.ruben.pojo.BaseEntity; import com.ruben.pojo.UserInfo; import lombok.*; import java.io.Serializable...) private UserInfo userInfo; public UserPO(Integer id) { super(id); } } 然后我们使用的构造方法去创建这个对象...,并赋值id UserPO userPO = new UserPO(888); 最后我们发现userPO.getId()出来的结果为null 是因为我们调用的的构造函数,是给的id赋值了 而我们

47030

子类继承,的初始化

《Thinging in Java》的引用 基础及衍生,而不再是以前的一个,所以在想象衍生的结果对象时,可能 会产生一些迷惑。...在衍生的构建器中,Java 会自动插入对基础构建器的调用。...下面这个例子向大家展示了对这种三级继承的应用 //: Cartoon.java // Constructor calls during inheritance class Art { Art()...个人总结: super关键字必须写在构造方法的方法体内的非注释代码的首行 子类进行初始化,必须调用的构造方法,如果的所有构造方法都用private修饰了的话,则无法继承,编译报错....衍生构造方法调用的构造方法,如果是无参构造方法,那么编译器会为衍生的构造方法首行加上super()。 编译器会强迫我们在衍生构建器的主体中首先设置对基础构建器的调用。

1.8K30

【Python】面向对象 - 继承 ② ( 子类重写成员 | 子类调用重名成员 | 子类中使用 名 调用成员 | 子类中使用 super 调用成员 )

一、子类重写成员 1、子类重写成员语法 子类 继承 的 成员属性 与 成员方法 后 , 如果对 继承的 成员 不满意 , 可以 重写 成员 ; 成员 属性 和 成员 方法 , 都可以进行重写...重新定义父的成员即可 ; 在 Python 中 , 不像 Java / Kotlin / Groovy 一样 , 如果子类重写成员 , 需要使用 @Override 注解 修饰 ; 2、代码示例...访问成员 : 如果需要调用被重写之前的 成员 , 则需要使用如下方法 : 方法一 : 使用 名 调用成员 ; 调用类同名成员变量 : 名.成员变量名 调用类同名成员方法...: 名.成员方法名(self) 方法二 : 使用 super 调用成员 ; 调用类同名成员变量 : super().成员变量名 调用类同名成员方法 : super().成员方法名(...) 2、代码示例 - 子类中使用 名 调用成员 在 Dog 子类中的 make_sound 函数中 , 通过 Animal.name 和 Animal.age 可以调用的成员变量 , 打印出来的值为的成员变量值

30430

关于java关系的小坑

学过JavaSE的都知道java在初始化的时候,如果存在直接,是先初始化,然后才初始化子类。      ...子类拥有所有的非私有化成员,非私有的成员不仅仅包括public修饰的成员,protected修饰的(protected修饰的可以访问其他包中子),不写访问修饰符是默认default修饰(只能访问同一个包中的...还未执行任何java方法,而给静态变量赋值是在实例初始化之后,存放于构造器中的。    ...正由于子关系的存在,方便了框架公共代码的抽取,比如在快递项目中,所有Action抽取CommonAction的时候,就是利用子的关系将公共代码抽取出来,这样再创建Action的时候就可以避免重复代码的编写...2.子类访问成员的时候,注意直接访问成员和调用方法访问的区别。

1.4K10

Java中子类和的构造函数?

参考链接: Java中的继承和构造函数 这篇文章总结了关于Java构造的常见​​问题。  1)为什么创建一个子类对象要也需要调用的构造函数? ...如果没有,编译器会插入调用构造的语句。这就是为什么在创建子类对象时中的构造超函数会被调用。  这里没有创建两个对象,只有一个子对象。...让中的构造器被调用的原因是,如果有私有的属性需要在它的构造函数中初始化。 ...在Java中,如果一个没有定义构造函数,编译器会为默认创建一个无参构造函数。如果在中定义了构造函数super(String s),在这种情况下,编译器将不会为创建一个无参构造函数。...3)子类中的显式调用构造函数  下面的代码是正常的:    子类(Sub)构造函数显式地调用(Super)中的带参构造参数。如果中定义了相对应的构造函数,那将会被正常良好的调用。

2K20

索引和索引

索引和索引 索引(this_class)和索引(super_class)都是一个u2型的数据,索引用于确定这个的全限定名,索引用于确定这个全限定名。...由于java语言不允许多重继承,所以索引只有一个。...索引为0x0004,去常量池里找索引为4的描述符,描述符中的索引为18,再去常量池里找索引为18的字符串,就是“java/lang/Object”。...全限定名是把全名中的“.”替换成“/”就可以了,比如java.lang.Object的全限定名就是“java/lang/Object”。...字段表集合中不会列出从父或者接口中继承而来的字段,但有可能列出原版Java代码中没有的字段,比如在内部类中为了保持对外部类的访问性,会自动添加指向外部类实例的字段。

76900

python之类的重写方法与调用方法

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏...下面我们来介绍一下python的的重写方法与调用方法。...---- 二、重写方法与调用方法   在继承关系中,子类会自动继承中定义的方法,但如果中的方法功能不能满足需求,就可以在子类中重写的方法。...2.子类调用方法   如果需要在子类中调用的方法,可以使用内置函数super()或通过“名.方法名()”的方式来实现。 例:子类调用的方法示例。...,欢迎点赞、收藏、在看,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。

2.6K30

怎么用IDEA快速查看图关系?

Java开发的,现在普遍都用上idea了。可以说,idea是当之无愧的Java开发神器。如果,你现在还没用idea,那肯定是你还没有感受过它的强大。...好了,话不多说,今天的主题主要是教大家怎么通过idea快速的查看一个图关系,即一个继承了哪些,实现了哪些接口,以及接口有哪些子接口和实现。...因为,图关系肯定会非常复杂,一下子添加进去几十个,根本就看不清,而且也没必要。我就不演示了,感兴趣的自己可以试一下。 一般都是选择自己感兴趣的查看。...图就变成以下这个样子。 ? 此外,还有一种方式可以查看接口的所有实现。在图中的某个上边单击一下,然后 Ctrl + H,调出层级关系。如图,选择这个按钮,显示所有子接口和实现。...然后,可以选择多个子类和实现,看他们的图关系。比如,图中我选中了四个。 Diagrams -> Show Diagram ? 再选择第一个Java Class Diagrams , ?

1.6K10

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

同名的属性会不会被覆盖掉,同名的方法就是多态,同名的方法之间的调用是怎么样的。...3) 构造的时候,Java机制是到底先给属性分配空间并赋值,还是先处理 构造函数,换句话说,当我们使用new操作符生成一个对象的实例的时候,的加载机制是怎么样的, 如果这三个问题都搞定了,都理解了,...上面的程序就很容易理解为什么输出是null了 Java机制里面有这样的一个原则就是:如果存在,子类可以不存在;如果子类存在,必须存在; 怎么理解上面的这句话呢,可以用实际的例子来说明,一个人结婚了但是没有小孩...,对应着前半句的意思;如果他生了小孩,那么这个小孩子是一定有父亲的 到Java代码中这样看,如果我们实例化一个子类,必须先构造这个子类的,否则是错误的。...Java 中子类加载的机制是第三个需要理解的地方: 1)相关的的加载机制还是跟  上面第二点相似,只是在子类初始化的时候必须先去初始化 2)只有 等Java机制给子类和所有的都分配了内存空间之后

2.7K40

Java中子类和间的调用关系

3、每个直接或间接是Object的子类,Object只有一个无参构造方法。   4、编译器会在每个构造方法的第一行隐式添加的默认无参构造器,即添加super()。   ...Must explicitly invoke another constructo   因为定义了一个带参数的构造器,因此编译器不会添加默认无参构造方法,但是因为在子类的构造器中没有显式调用的某个构造方法...,因此编译器会自动添加super()方法, 但是中不存在默认无参构造方法,因此会提示默认无参构造方法未定义错误。   ...  }   class Teacher extends Employee {   public Teacher() {   super(10);   }   }   这样,在子类的构造器中显式调用了的某个构造器...多层次调用构造方法:   假设我们有这样一个层次结构:   Object->Employee->Teacher->Professo   class Employee {   public Employee

94030
领券