面向对象三大特征

封装

一个对象属性隐藏对象内部,不允许外部对象直接访问对象内部信息,必须要通过一些方法操作属性

继承

使用已经存在的类的定义作为基础建立新的类,新的类可以增加新的数据功能,也可以父类功能

注意:

多态

一个对象拥有多种的状态,具体表现父类的引用指向子类对象

特点

a++与++a

基本类型包装类型区别

重载重写

接口抽象类的异同

共同点
不同点

拷贝、浅拷贝引用拷贝

==equals()

  • 若是基本数据类型,==比较的是值,若是引用数据类型,==比较的是引用地址
  • equals未被重写,等价于==,若被重写了,则比较的是值

hashCode( ) 与 equals( )

两者都是用于比较两个对象是否相等,但hashCode效率更高

Object中常见的方法

finalfinallyfinalize三者区别

String StringBuilder和StringBuffer

字符串拼接使用+ ,实际上是通过StringBuilder调用append()方法实现的,拼接完成后调用toString()方法得到String对象

循环中,+拼接字符串会导致每次都创建StringBuilder对象,不过在JDK9中这个问题得到解决

序列化与反序列化

不想进行序列化的变量transient修饰

注意:

反射

通过反射可以获取任意一个类的所有属性和方法,并且可以调用这些属性和方法

获取Class对象的四种方式
  1. 知道具体类

    Class alunbarClass = TargetObject.class;
    
  2. 知道类的全路径

    Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");
    
    
  3. 通过对象实例

    TargetObject o = new TargetObject();
    Class alunbarClass2 = o.getClass();
    
  4. 通过类加载器传入类路径

    ClassLoader.getSystemClassLoader().loadClass("cn.javaguide.TargetObject");
    
    
通过反射操作类的方法和参数
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {
        /**
         * 获取 TargetObject 类的 Class 对象并且创建 TargetObject 类实例
         */
        Class<?> targetClass = Class.forName("cn.javaguide.TargetObject");
        TargetObject targetObject = (TargetObject) targetClass.newInstance();
        /**
         * 获取 TargetObject 类中定义的所有方法
         */
        Method[] methods = targetClass.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method.getName());
        }

        /**
         * 获取指定方法并调用
         */
        Method publicMethod = targetClass.getDeclaredMethod("publicMethod",
                String.class);

        publicMethod.invoke(targetObject, "JavaGuide");

        /**
         * 获取指定参数并对参数进行修改
         */
        Field field = targetClass.getDeclaredField("value");
        //为了对类中的参数进行修改我们取消安全检查
        field.setAccessible(true);
        field.set(targetObject, "JavaGuide");

        /**
         * 调用 private 方法
         */
        Method privateMethod = targetClass.getDeclaredMethod("privateMethod");
        //为了调用private方法我们取消安全检查
        privateMethod.setAccessible(true);
        privateMethod.invoke(targetObject);
    }

原文地址:https://blog.csdn.net/weixin_59864324/article/details/134699622

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_13255.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注