java零基础(内部类与Object类)

内部类

概念
1,在类中再定义一个完整的类
2,内部编译后会生成独立的字节码文件
3,内部类可以访问外部类的私有成员,不破坏封装。
4,可为外部类提供必要的内部功能组件。

package csdn1.d3;

/**
 * 成员内部类,静态内部类,局部内部类
 */
public class Outer {
    Integer name;
    //成员内部类,不能直接访问,需要通过外部类对象去访问
    class  Inner{
        String name;
        //不能声明静态属性
       /* static  int name;*/
    }
    //可以直接访问内部类,不用先创建外部类对象
    static class  Inner2{
        //可以有静态属性
        static String name;
    }
    public void createClass(){
        String name ;
        //局部内部类,可访问局部属性
     final  class  Inner3{
            String name;
        }
    }
}

成员内部类
1,是外部类的成员部分,创建内部类对象时,必须依赖外部类对象
2,Outer out = new Outer();
Outer.Inner in = out.new Inner();
3,访问
通过 this.访问内部类属性
通过外部类名.this 访问外部类属性
注:成员内部类中不能直接声明静态属性
静态内部类
1 不依赖外部类对象,可直接创建内部类对象,或通过类名访问静态成员。
2,只能直接访问外部类的静态成员,(外部类的实例成员需要创建对象)
3,Outer.Inner in = new Outer.Inner();
4,访问
n.实例成员
Outer.Inner. 静态成员
局部内部类
1,定义在方法内部的类,作用范围和创建对象的范围仅在方法主体中,隐藏类的实现细节。
2,局部内部类访问外部类的局部变量,无法保证对象和局部变量的生命周期一致。必须添加final前缀,保证局部 变量的生命周期大于对象生命周期。(JDK8中,可省略final)
3). 隐藏类的实现细节。
匿名内部类
1,没有类名的局部内部类
2,必须继承一个弗雷或者实现一个借口
3). 定义类、实现类、创建对象的语法合并。
4). 仅父类或接口公开,实现类作为匿名内部类加以隐藏,强制弱耦合。

  //创建成员内部类对象
    Outer outer=new Outer();
    Outer.Inner  inner= outer.new Inner();
    //创建静态内部类对象
    Outer.Inner2 inner2=new Outer.Inner2();
    //匿名内部类,适用于,借口,类等。
    Runnable runnable=new Runnable() {
        @Override
        public void run() {

        }
    };

Object类:

概念
I. 超类、基类、所有类的直接或间接的父类,位于继承树的最顶层。
2. 任何类,如果没有书写extends显示继承某个类,都默认继承Object类,否则为间接继承。
3. Object类中所定义的方法,是所有对象都具备的方法。
4. Object类型的引用可以存储任何对象;作为参数,可接受任何对象,作为返回值,可返回任何对象。

方法
5. 常用方法:
I. public final Class getClass() //返回此对象的运行时类型(真实类型),判断两个对象的运行时类型是否一致。
6. public int hashCode() //一个对象的整数名称,根据对象的地址或字符串或数字算出来的,哈希码并不是完全唯一 的,尽量保证不同对象返回不同哈希码。
7. public String toString() //返回该对象的字符串表示。(全限定名 + 16进制哈希码)
8. public boolean equals(Object obj) //判断指定对象是否与此对象"相等"。
9. protected void finalize() throws Throwable //当对象判定为垃圾对象时,由垃圾收集器调用该方法。
垃圾收集:
10. 垃圾对象:没有任何引用指向的对象。
11. 垃圾回收:销毁垃圾对象,释放数据存储空间。
12. 当对象为垃圾对象时,通过GC(垃圾收集器)回收。
13.
垃圾收集器GC:
14. 自动回收:JVM的内存耗尽,无法为新对象分配空间时,一次性回收所有垃圾对象。
15. 手动回收:使用System.gc(); 通知JVM执行垃圾回收。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值