精华内容
下载资源
问答
  • package ... import java.lang.reflect.Field; import java.lang.reflect.Method; /** * @Author: lc * @Date: 2020/3/25 9:53 */ public class Subclas...
    package com.tl.gateway.plugins.user.authentication.plugin.util;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * @Author: lc
     * @Date: 2020/3/25 9:53
     */
    public class SubclassUtil {
        /**
         * 把父类的属性值赋值给子类
         *
         * @param father 父类
         * @param child  子类
         * @param <T>
         * @throws Exception
         */
        public static <T> void fatherToChild(T father, T child) throws Exception {
            if (child.getClass().getSuperclass() != father.getClass()) {
                throw new Exception("child 不是 father 的子类");
            }
            Class<?> fatherClass = father.getClass();
            Field[] declaredFields = fatherClass.getDeclaredFields();
            for (int i = 0; i < declaredFields.length; i++) {
                Field field = declaredFields[i];
                Method method = fatherClass.getDeclaredMethod("get" + upperHeadChar(field.getName()));
                Object obj = method.invoke(father);
                field.setAccessible(true);
                field.set(child, obj);
            }
        }
    
        /**
         * 首字母修改为大写,例如:in:deleteDate --> out:DeleteDate
         */
        public static String upperHeadChar(String in) {
            String head = in.substring(0, 1);
            String out = head.toUpperCase() + in.substring(1, in.length());
            return out;
        }
    }
    

     

    展开全文
  • 在类加载-初始化的时候进行,主要目的是变量赋予初始 构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块。 java构造代码块放到构造方法前面,用于实例化一些共有的实例变量,减少...

    静态代码块:static修饰的代码块。

                     在类加载-初始化的时候进行,主要目的是给变量赋予初始值

    构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块。

                    java会把构造代码块放到构造方法前面,用于实例化一些共有的实例变量,减少代码量

    构造方法:与类同名,没有返回值类型的方法

                  用于实例化变量

    父类和子类:对子类的调用会导致其对父类的主动调用,所以尽管实例化的是子类,但也会导致父类的初始化和实例化,且父类先于子类执行

     

    参考实例:

    public class HelloB extends HelloA {
        
        public HelloB() {
            
        }
    
        {
            System.out.println("I’m B class");
        }
        static {
            System.out.println("static B");
        }
    
        public static void main(String[] args) {
            new HelloB();
        }
    }
    
    class HelloA {
        public HelloA() {
        }
    
        {
            System.out.println("I’m A class");
        }
        static {
            System.out.println("static A");
        }
    }

    输出结果:

    static A
    static B
    I’m A class
    I’m B class

     

    转载于:https://www.cnblogs.com/lashou/p/6069287.html

    展开全文
  • 2.向上转型:子类引用的对象转换为父类类型称为向上转型,把子类对象直接赋给父类引用叫upcasting,向上转型不用强制转型(类似于低精度赋高精度不用强制转换)。 如: Father a = new Son(); 相当于 Son s= new Son...

    1.父类引用可以指向子类对象,子类引用不能指向父类对象。

     

     

    2.向上转型:子类引用的对象转换为父类类型称为向上转型,把子类对象直接赋给父类引用叫upcasting,向上转型不用强制转型(类似于低精度赋给高精度不用强制转换)

    : Father a = new Son();

    相当于

    Son s= new Son();

    Father f=s;

    注意:向上转型时,只能调用父类的成员方法,如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override)。这个调用过程就称为“动态绑定”。

     

    3.向下转型:父类引用的对象转换为子类类型称为向下转型,把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型(类似于高精度赋给低精度要强制转换)

    • 如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。

     

     

     

    • 如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。它可以使用instanceof来避免出错此类错误。

     

     

    转载于:https://www.cnblogs.com/shyroke/p/6282800.html

    展开全文
  • java-怅然所失

    2019-11-18 14:41:59
    一个父类子类或间接子类声名的对象引用赋给父类 注意: 父类可以是一般的class,interface,abstract 上转型对象不能调用子类新增的属性和方法 1. 属性:子类中与父类同名的属性属于子类新增的属性,...

    1.1 抽象类

    1.有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法
    2.抽象类,抽象方法使用abstarct修饰
    3.抽象类不能被是实例化
    4.抽象类可以包含成员变量、方法、构造器、初始化块、内部类(接口、枚举)5种成分。
    5.含有抽象方法的类(包括直接定义了一个抽象方法;或继承了一个抽象父类,但没有完全实现父类包含的抽象方法;或实现了一个接口,但没有完全实现接口包含的抽象方法三种情况)

    1.2 java上转型对象

    把一个父类的子类或间接子类声名的对象引用赋给父类

    注意:

    • 父类可以是一般的class,interface,abstract

    • 上转型对象不能调用子类新增的属性和方法

        1. 属性:子类中与父类同名的属性属于子类新增的属性,不能被调用,如果调用同名的属性则调用的是父类被隐藏的属性,输出值为父类的值
        2. 方法: 上转型调用的方法,要么直接是从父类那继承未被重写的方法,要么是被重写的方法
      
    • 如果需要访问新增的属性和方法,则可以通过在被重写的方法中调用子类以及父类的属性和方法

    • 上转型对象相对于子类对象功能被弱化,但是可以强制转化为子类对象,从而具备子类的所有属性和方法

    • 子类对象实类被上转为父类对象,之所以还能通过重写方法间接操作子类新增的方法和属性,是因为这个对象实类在内存中还是子类类型的,只不过能力被临时削弱

    • 子类对象与上转为父类对象,在内存中的地址一样,所以通过
      == 或者 equals() 比较时值相等

    展开全文
  • java继承

    2019-08-24 01:45:35
    对继承的理解,子类继承父类就可以把父类的属性和方法当成自己的来用。除了私有化方法以外。 这个怎么理解呢? 继承之后不用管父类,就把父类的属性和方法完全当成自己的就行了。 比如你父类的一个属性赋值,然后...
  • Java 面向对象(下)

    2016-11-15 09:14:29
    自动装箱:一个基本类型变量直接赋对应的包装类变量,或者赋Object变量(Object是所有类的父类子类对象可以直接赋给父类变量);自动拆箱:允许直接包装类对象直接赋一个对应的基本类型变量。 包装类...
  • Java——继承机制详谈

    2018-12-20 11:13:23
    如果此时子类中有与父类相同的成员变量或静态方法,也只是把父类的静态方法隐藏。 当通过该变量访问它所引用的对象的成员变量和静态方法时,该实例变量的取决于该变量的声明类型; 当通过该变量来调用它所引用的...
  • 继承继承实现了高度复用的同时,也带来了一个严重的问题,破坏了父类的封装性。封装就是每个类应该把内容部信息(属性)和实现细节(方法)隐藏...1,尽量把父类内部的数据隐藏,把属性设置成private,不让子类之间访问父类
  • 多态 instanceof java中的instanceof运算符是用来在运行时...把子类的实例化对象赋值给父类的引用类型便称之多态现象; 多态又命多种状态: 多态 = 继承 + 重写 多态的接地气的理解:父类作为形参,子类类型作为实参
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    deriveClass.java 子类访问父类变量示例 getLinePara.java 获取命令行参数示例 hasStaticMethod.java 静态成员方法示例 hasStatMember.java 静态成员变量示例 HelloNative.c 用C写的一个小程序 HelloNative....
  • @Inherited 允许子类继承父类中的注解@Target 表示该注解用于什么地方,可能的在枚举类 ElemenetType 中public enum ElementType {TYPE, //类(型)注解FIELD, //字段注解,不要忘了,字段可以是对象METHOD, //...
  • 关于Java中的继承

    2014-12-18 12:17:59
    1. 如果子类继承的是属性,那么,子类将从父类那里拷贝来一份副本,是完全一样的,也就是说在对象中也拥有自己的这个属性,并且和父类一模一样 2.如果子类继承的是方法,那么子类不会在父类中完全得到一份...
  • java基础7 封装

    2018-04-03 18:25:00
    面向对象的三大特征: 1.封装 (将一类属性封装起来,并提供set()和get()...3.多态 (父类的引用指向子类的对象,或者接口的引用类型变量指向接口实现类的对象) 1、前言  我们日常使用的电脑主机,cpu、内存...
  • 一,多态(1)多态的作用:不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,在赋值后,父类型的引用可以根据赋他的子类对象的特性以不同形式的执行。(2)实现多态的两种...
  • Java中this与super的区别

    2018-06-27 22:41:45
    Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类) 中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高, 所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法, 但是...
  • 2020/11/11 java练习

    2020-11-11 21:08:51
    i=i++,i的不变,原因是因为i先做赋值然后再++,也就是假如i=1,i先1赋值i,然后再++,i=2。 形参的方法被调用时,传递的是参数的副本 IS-A:表示继承,父类子类。 HAS-A:表示组合,是整体和部分的关系,...
  • 另一种,在基础封装里面,父类私有化的成员变量,子类new 出子类的对象通过set 方法赋值,继承里讲,子类无法继承父类私有成员,那么请问按照这种说法,这里,set 方法里的this又是怎样把值给父类私有变量的?...
  • Java面向对象(下)

    2019-03-04 23:26:52
    Java提供了final关键字来修饰变量、方法和类,系统不...自动装箱就是可以直接一个基本类型一个包装类实例。 ==和equals方法 当使用==来判断两个变量是否相等时: 如果两个变量是基本类型变量,且都是数值...
  • 可以看出setName方法中两次使用的name,都是直接寻找距离自己最近的形参name,就相当于参数name的设置参数name,根本就没有参数设置成员变量。 ​ 使用 this.变量名 的语法,此时访问的就是成员变量,...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
  • java 面试题 总结

    2009-09-16 08:45:34
    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被...
  • 7.9.3 留个无参数的构造方法——重要属性赋初始 183 7.9.4 在构造方法中调用构造方法 184 7.10 方法大汇总 185 7.10.1 本例中用到的类 186 7.10.2 使用例程将本章的知识穿起来 189 7.11 小结:多方位理解...
  • B) 子类继承父类,那么子类可以重写父类的方法,但是一旦重写父类方法后,无法通过子类访问到父类的该方法。 C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类...
  • java编程练习题

    热门讨论 2011-12-26 12:35:34
    Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定...
  • 7.9.3 留个无参数的构造方法——重要属性赋初始 183 7.9.4 在构造方法中调用构造方法 184 7.10 方法大汇总 185 7.10.1 本例中用到的类 186 7.10.2 使用例程将本章的知识穿起来 189 7.11 小结:多方位理解...
  • 7.9.3 留个无参数的构造方法——重要属性赋初始 183 7.9.4 在构造方法中调用构造方法 184 7.10 方法大汇总 185 7.10.1 本例中用到的类 186 7.10.2 使用例程将本章的知识穿起来 189 7.11 小结:多方位理解...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    70、TreeSet里面放对象,如果同时放入了父类子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    70、TreeSet里面放对象,如果同时放入了父类子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 71、说出一些常用的类,包,接口,请各举5个 72、java中有几种...
  • java常用工具类的使用

    热门讨论 2012-03-19 20:11:37
    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒表示为SQL DATE,是数据库操作中java.sql.Date的父类。关于数据库...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

java把父类值给子类

java 订阅