• Object类、包装类、内部类详解


    1、Object类

    1、概念:
    1.1 所有类在创建时都默认继承了java.lang.Object
    1.2 所有类对象都可以声明为类对象的引用

    Object ob1=new String();
    Object ob2=new Integer();

    2、子类继承了其方法:
    2.1 equals
    类似于”==”,比较对象的引用
    ps:具体前面blog有详讲,这里就不赘述了
    2.2 toString():
    返回一个对象的字符串表示形式(可改写)
    源码如下:

    public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }

    2.3、getClass():
    返回一个对象的实际类型
    ps:
    - 其返回的是具体实例化的类型
    - instanceof判断的是其是否实例化了,包括其父类的判断

    2、包装类

    1、概念:
    包装类是对基本类型的包装:所以也是8个
    2、列举表:

    基本类型 包装类
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean

    3、包装类的转换:
    包装类、String、基本类型间两两转换
    具体可参考我前一篇关于String的blog,中有详解

    3、内部类*

    1、成员内部类
    1.1 访问权限:
    可以访问外部内的静态或非静态的属性和方法
    1.2 实例:
    先实例化外部类,再实例化内部类
    2、静态内部类
    1.1 访问权限:
    可以访问外部内的静态的属性和方法
    1.2实例:
    先实例化外部类,再调用静态类
    3、局部内部类
    1.1 访问权限:
    可以访问外部内的静态或非静态的属性和方法
    1.2 实例:
    在方法中实例化,接着实例化外部类,调用方法
    4、匿名内部类
    1.使用情况:
    1.1 只实例化一次的对象
    1.2 局部内部类要实现接口或继承某些父类

    最后贴上练习代码君:

    package com.jacob.javase;
    
    /*
     * 内部类分类:
     * 1.成员内部类
     * 2.静态内部类
     * 3.局部内部类
     * 4.匿名内部类
     */
    public class InnerClass {
        public static void main(String[] args) {
            // 成员内部类的实例
            // MemberInner.Inner2 mi=(new MemberInner()).new Inner2();
            // mi.doSomething();
            // MemberInner mi1=new MemberInner();
            // mi1.method();
            // 静态内部类的实例(可直接通过类调用)
            // StaticInner.Inner si=new StaticInner.Inner();
            // si.test();
            // 实例局部类
            // LocalInner li = new LocalInner();
            // li.doSomething();
            // 4.匿名内部类:使用条件:
            // 4.1 局部内部类可能就需要创建一个对象
            // 4.2 局部内部类需要实现外部接口或继承某些父类
            new InnerClass();
            new Test() {
    
                @Override
                public void m1() {
                    // TODO Auto-generated method stub
                    System.out.println("匿名类test");
                }
            }.m1();
        }
    }
    
    interface Test {
        void m1();
    }
    
    // 1.成员内部类:
    class MemberInner {
        private int a = 4;
    
        // 访问权限:可访问外部类的的静态与非静态的属性和方法
        public class Inner2 {
            private int a = 5;
    
            public void doSomething() {
                System.out.println("Hello World!");
                System.out.println(this.a);// 5
                System.out.println(MemberInner.this.a);// 4
            }
        }
    
        public void method() {
            // 实例化成员内部类
            Inner2 inner = new Inner2();
            System.out.println(inner.a);
        }
    }
    
    // 2.静态内部类:
    class StaticInner {
        private static int a = 4;
    
        // 访问权限:只能访问外部类的静态属性和方法
        public static class Inner {
            public void test() {
                System.out.println(a);
            }
        }
    }
    
    // 3.局部内部类
    // 访问权限:可以访问外部内的静态或非静态属性和方法:
    class LocalInner {
        public void doSomething() {
            int b = 1;
            final int a = 4;
            class Inner3 {
                int c = 1;
    
                public void test() {
                    System.out.println(a + b);
                }
            }
            // 只能在方法块中实例
            Inner3 li1 = new Inner3();
            li1.test();
            System.out.println(li1.c);
        }
    }
    
  • 相关阅读:
    自学Python3.5-字符串格式化 作用域 递归
    自学Python3.2-函数分类(内置函数)
    自学Python3.1-函数基础
    自学Python2.7-collections系列
    自学Python2.6-深浅拷贝
    自学Python2.5-基本数据类型-set集合
    自学Python2.4-基本数据类型-字典dict(objct)
    自学Python2.3-基本数据类型-元组tuple(object) 方法
    自学Python2.2-基本数据类型-列表list(object)
    java通过jdbc访问mysql,update数据返回值的思考
  • 原文地址:https://www.cnblogs.com/xieji233/p/6155633.html
Copyright © 2020-2023  润新知