您的位置:首页 > 移动开发 > Objective-C

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

2017-12-15 16:01 477 查看


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、列举表:
基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: