精华内容
下载资源
问答
  • 子类继承父类的属性
    千次阅读
    2019-12-21 19:27:40

    继承时的@Data

    我们知道@Data注解在类,为类的所有字段注解@ToString、@EqualsAndHashCode、@Getter的便捷方法,同时为所有非final字段注解@Setter。

    要注意@EqualsAndHashCode注解与@ToString注解默认情况下是忽略父类的成员变量的,测试代码如下:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class School {
    
      public int id;
    
      public String name;
    
      public String age;
    
    }
    
    @Data
    class ShangHai extends School {
      private String type;
    }
    
    
    class test {
    
      public static void main(String[] args) {
        ShangHai shangHai = new ShangHai();
        shangHai.setId(1);
        shangHai.setName("上海大学");
        shangHai.setType("A");
    
        ShangHai shangHai2 = new ShangHai();
        shangHai2.setId(2);
        shangHai2.setName("华东师范");
        shangHai2.setType("A");
    
        System.out.println(shangHai.equals(shangHai2));
        System.out.println(shangHai.toString());
        System.out.println(shangHai2.toString());
    
      }
    }
    

    它的打印结果是:

    true
    ShangHai(type=A)
    ShangHai(type=A)
    

    在此可以发现,上述的两个实例没有对比父类的成员变量是否相同,仅仅对比的type字段的值,所以是true。同理,toString方法是不会打印父类的成员的。

    使父类成员变量参与到逻辑中

    这个解决很简单,仅仅需要给注解带上一个参数:

    @Data
    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    class ShangHai extends School {
      private String type;
    }
    

    打印结果:

    true
    ShangHai(super=School(id=1, name=上海大学, age=null), type=A)
    ShangHai(super=School(id=2, name=华东师范, age=null), type=A)
    

    小结

    由上述的代码演示,我们可以知道,在类继承的情况时应注意@Data注解不会涉父类的成员的坑,需要加callSuper = true的参数

    更多相关内容
  • 转载于:https://www.cnblogs.com/fanweisheng/p/11232969.html

     

    转载于:https://www.cnblogs.com/fanweisheng/p/11232969.html

    展开全文
  • 问题描述:持久类父类属性如下 @Data //lombok注解 @Accessors(chain = true) //lombok注解链式写法 public abstract class BaseEntity implements Serializable { @ApiModelProperty("创建人") private Long ...

    问题描述:持久类父类属性如下

    @Data    //lombok注解
    @Accessors(chain = true)      //lombok注解链式写法
    public abstract class BaseEntity implements Serializable {
    
        @ApiModelProperty("创建人")
        private Long createdBy;
        @ApiModelProperty("创建时间")
        private Date creationDate;
        @ApiModelProperty("最后修改人")
        private Long lastUpdatedBy;
        @ApiModelProperty("最后修改时间")
        private Date lastUpdatedDate;
    }
    

    持久类子类属性

    
    /**
     * 企业实体类
     */
    @Entity
    @Table(name = "hr_company_t")
    @Data
    @Accessors(chain = true)
    @ApiModel("HrCompanyT")
    @AllArgsConstructor
    @NoArgsConstructor
    public class HrCompanyT extends BaseEntity implements Serializable {
        private static final long serialVersionUID = 594829320797158219L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @ApiModelProperty("公司id")
        private Long companyId;
    
        @ApiModelProperty("公司名称")
        private String companyName;
    
        @ApiModelProperty("公司Logo")
        private String companyLogo;
    
        @ApiModelProperty("企业地址")
        private String address;
    
        @ApiModelProperty("企业描述")
        private String companyDesc;
    
        @ApiModelProperty("企业主管理员")
        private String adminUserId;
    
        @ApiModelProperty("删除标识,Y是删除,N是未删除")
        private String deleteFlag;
    
    
    }
    

    如此HrCompanyT继承了BaseEntity类,即包含了父类的四个成员属性,在进行持久化到数据库时,明明已给父类的四个属性都已赋值,但保存到数据库父类的四个属性值为null。

    解决办法:在BaseEntity类上增加@MappedSuperclass注解,改造后的父类如下

    
    @Data
    @Accessors(chain = true)
    @MappedSuperclass
    public abstract class BaseEntity implements Serializable {
    
        @ApiModelProperty("创建人")
        private Long createdBy;
        @ApiModelProperty("创建时间")
        private Date creationDate;
        @ApiModelProperty("最后修改人")
        private Long lastUpdatedBy;
        @ApiModelProperty("最后修改时间")
        private Date lastUpdatedDate;
    }
    
    

    测试执行,可正常保存父类对应属性值。

    网义:标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。
    标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口

    展开全文
  • 使用Lombok子类继承父类父类属性不生效 子类增加: @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @Data @Entity @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) ...

    使用Lombok子类继承父类,父类属性不生效

    子类增加:

    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    
    @Data
    @Entity
    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    public class SysRights extends BaseEntity {
        @Id
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid2")
        private String rightsId;
        private String rightsName;
        private String rightsUrl;
        private String rightsIcon;
    }
    
    

    问题解决
    在这里插入图片描述

    展开全文
  • 子类继承父类时各种属性的问题

    千次阅读 2020-02-20 16:15:05
    子类可以继承父类属性值,后续操作互不影响。 静态属性: public class Main7 extends Father{ //static int test = 11; public static void main(String[] args) { test++; Father father = new Father...
  • 通过 call()把父类型的 this 指向子类型的 this,这样就可以实现子类型继承父类型的属性。 举例如下: 通过子构造函数来继承父构造函数的属性,则在子构造函数内部通过call()来将子构造函数的this指向指向父构造...
  • 案例一 试想一下代码的执行结果 ... public class A { public static void main(String[] args) { FatherClass father = new FatherClass();... System.out.println(father.info);... SonClass son = new ...
  • WPF继承_子类继承父类,实现跨类调用方法
  • Java子类继承父类详解

    千次阅读 2021-02-12 11:46:34
    别和我说你真的懂了继承,先来看下面的代码,回答出我的问题再说代码很简单,如下:父类:public class T {public void run(){System.out.println("T can run");}public static void main(String args[]){T t = new ...
  • Java 子类继承父类静态属性后,两者是共享的 public class Father{ protected static String money; protected String getMoney(){ return money; } } public class Son extends Father{ public static ...
  •  我们知道当子类继承父类时,会覆盖父类中和子类同名的方法和属性,前提这些方法和属性不是私有的,下面让我们看一段代码如下   class A{ public int num = 1 ; public String name="A"; ...
  • 子类到底能不能继承父类的私有属性

    千次阅读 多人点赞 2021-10-27 11:12:20
    子类通过继承父类属性的行为,我们称之为继承。Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患:当多个父类定义相同的功能,当功能内容不同的时候,子类对象不确定要运行哪一个,在Java中用另一种...
  • 这是看到的一道笔试题目,当时在思考为什么会出现这个,于是找到了一个子类继承父类后new子类对象的代码 父类 public class JVMBase { public static String staticName="父类静态变量"; public String name="父类...
  • 子类继承父类private成员 子类继承父类时,父类中的private修饰的成员也能被继承,但是不能直接使用。
  • 子类继承父类 private

    2021-03-22 10:35:34
    我们知道一个类A通过extends继承另一个类B,我们就说A类是B类的子类子类可以继承父类属性/方法/属性值但是父类的被private修饰的属性/属性值是父类所私有的,不能被继承的但是如果你继承的方法中有用到这个私有化的...
  • 学习java的继承时,肯定都会遇到一个问题,父类的私有成员变量子类继承吗,父类的成员变量,子类是怎么继承的? 我们知道,java在进行类的实例化时,会优先实例化父类,,直到当前类没有父类。 那么我们使用一小段...
  • 子类继承父类时会继承什么

    千次阅读 2020-11-17 22:24:48
    1.首先,我们都知道子类继承父类会继承父类的非private属性和方法。 2.接下来我有个疑问,父类继承了一个祖父类,子类再继承父类,子类继承祖父类吗? 先说答案,是的,子类也会继承祖父类 //祖父类 public class ...
  • Python 子类继承多个父类属性

    千次阅读 多人点赞 2020-12-31 11:36:16
    Python 子类继承多个父类属性可能存在的误区正确继承方法 可能存在的误区 python允许子类同时继承多个父类。但是在子类初始化父类时,单继承和多继承稍有不同。使用单继承的初始化方法会导致父类属性无法全部继承。 ...
  • JavaScript 面向对象-子类继承父类属性和方法(原型的应用) 步骤: 创建构造函数Person,添加属性民族(nation)和肤色(skinColor),添加两个方法,分别返回民族和肤色 创建构造函数Woman,添加属性性别(sex...
  • public abstract class Parent { String name = "parent" ; } ...可以看出,子类中的属性的引用指向的是父类属性的地址。 转载于:https://www.cnblogs.com/yzjT-mac/p/6229625.html
  • 从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单...
  • java子类父类属性重复问题

    千次阅读 2021-02-28 08:53:26
    java 子类继承 父类, 但子类中 包含和父类相同 属性 ,给子类赋值之后,父类的相同的属性值还是空的。类定义如下:public class Person {private String name;private String age;// ignore getter and setter}...
  • 和C++类似,可以继承基类的公共属性和方法...子类继承父类的成员变量当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:1)能够继承父类的public和prote...
  • 子类能否继承父类的私有属性

    千次阅读 2021-08-30 20:04:10
    子类能否继承父类的私有属性? 参考: https://blog.csdn.net/ql_7256/article/details/107428016 https://www.zhihu.com/question/61922420 Java官方文档的解释:子类不能继承父类的私有属性,但是如果子类中公有的...
  • 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的。 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,...
  • 所以子类继承父类,子类执行的时候,父子类的执行顺序: 父类的static修饰的属性,代码块和方法(按照出现顺序执行)=》子类的static修饰的属性,代码块和方法=》当前主程序=》父类的普通属性=》父类的普通代码块=...
  • css不继承父类属性有哪些

    千次阅读 2021-08-05 00:42:26
    css不继承父类属性有:display、width、height、margin 、border、float、clear、position、top、right、bottom、left、background、content、size等等。本教程操作环境:windows7系统、CSS3&&HTML5版、...
  • C++子类继承父类时如何写构造函数

    千次阅读 多人点赞 2020-02-18 15:05:03
    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统...
  • 1.子类继承父类后,可以直接调用父类的变量和方法,那为什么还用super调用呢? 原因:如果子类对父类的变量和方法进行了重写,你又想再使用父类的方法,这是就需要super来调用,否则默认调用你在子类中重写的变量和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 295,951
精华内容 118,380
关键字:

子类继承父类的属性