14.1众类鼻祖——Object类
Object类中常用的方法及操作功能
14.1.1 取得对象信息:toString()
System.out.println(p)//直接输出对象
System.out.println(p.toString)//二者的输出结果一样
//Persion@1db9742
//覆写Object类的方法
class Person extends Object{
String name="teenway";
int Num=1009;
public String toString(){
return "I am "+this.name+", Num:"+this.Num;
}
}
class Test{
public static void main(String[] args){
Person p=new Person();
System.out.println(p);
}
}
14.1.2对象相等判断方法:eqauls()
System.out.println(p1.equals(p2)?"同一个人":"不是同一个人");
//实际上是比价两个对象的地址,会判定为不同的人
//如果要比较需要覆写Object类的equals方法
14.1.3 对象签名 hashCode()
//书里讲的不是很明白,自己去查
14.1.4 使用Object接收任意引用数据类型对象
//使用Object接收数组
int temp[]={1,3,5,3,6};
Object obj=temp;
if o instanceof int[]
int x[]=(int[])o;
//虽然Object类和数组之间没有任何关系,但是数组是引用类型,所以可以用Object接收
//接口和Object更不会有任何关系
//因为接口本身不可能去继承任何一个类,可是在Java设计的时候由于许多地方都需要
//接口的支持,所以Object依然可以接收接口类型
A a=new B();//class B implements interface A
Object obj=a;
A x=(A)obj;
14.2内部类
14.2.1 内部类的基本定义
内部类的作用:
(1)提供了更好的封装,可以把内部隐藏在外部之内,不允许同一个包的其他类访问该类
(2)内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以相互访问。但外部类不能访问内部类的实现细节,例如内部类的成员变量
(3)匿名内部类适用于创建哪些仅需一次的类
//内部类的使用
Outer outer=new Outer();
outer.inst();
14.2.2 使用static定义的内部类就是外部类
//静态成员不能访问非静态成员
//静态类内部类不能访问外部类的实例成员,只能访问外部类的类成员
14.2.3 在方法中定义内部类
14.3匿名内部类
14.4 匿名对象
//匿名对象的使用
new Persioin.talk
14.5 this 关键字的使用
//eample1
this.name=name
this.age=age
//emaple2
if(this.name.equals(p.name)&&(this.age.==p.age)
//emaple3
//调用本类无参构造方法
this();
14.6 static关键字的作用
14.6.1 使用static定义属性
//用static修饰的属性是公共属性
String name;
static String city="中国";
int age;
Persion p1,p2,p3;
p1.city="美国";
//则所有的人都来自美国了,不需要一个一个的修改
14.6.2 使用static定义方法
//使用static定义的方法可以由类名称直接调用
public static void setCity(String c)
Person.setCity
14.6.3 static main方法
由于虚拟机需要调用main()方法,所以该方法的权限必须是public,
又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该接收一个String类型的数组参数,该数组中保存执行Java命令时传递所运行的类的参数
14.6.2 static应用——static代码块及静态导入
//static代码块经常用来初始化类属性,只执行一次,优先于static方法