多态_object类_内部类_匿名内部类

来源:互联网 发布:js null与undefined 编辑:程序博客网 时间:2024/04/28 04:45
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
【多态】
多态:可以理解为事物存在的多种体现形态。
在多态中,成员变量的特点: 无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:无论编译和运行,都参考做左边。

接口增加了功能扩展,同时多态(父类引用指向子类对象)应用提高了程序扩展性

【object类】
Object:是所有对象的直接后者间接父类,传说中的上帝。
该类中定义的肯定是所有对象都具备的功能。
java所有的对象都能够进行比较两对象是否相同,所以这个类在object中
equals(object)其实比较的是内存地址,对象==于也是比较地址
Object类中已经提供了对对象是否相同的比较方法。
如果自定义类中也有比较相同的功能,没有必要重新定义。因为你定义完比较方法也在;
只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖。
注意覆写必须一模一样
java认为所有对象都能被变成字符串打印
toString()
我想让我的对象对应的字符串有意思,(覆写)重写toString()
public String toString()
{
return "demo:"+num;
}
第个对象都有自已的字符串表现形式
java中所有对象都有hash值(要转成16进制)
hashCode()
System.out.println(Integer.toHexString(c.hashCode()));
一个对象的建立要依赖于类文件,进内存的时候类文件被封装成了对象,

【内部类】
一个类里面可以定义多个内部类
访问特点:内部类的好处:
1,内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this.
class a{
private int x=3;
class b{
int x=4;
void aa(){
int x=9;
System.out.println(x);//真接x=9,this.x=4,a.this.x=3
}
}
}
2,外部类要访问内部类,必须建立内部类对象。
3,Outer.Inner in = new Outer().new Inner();外部类的其它类访问外部类的内部类
4:当内部类在外部类的成员位置上时内部类可以被私有化,那Outer.Inner in = new Outer().new Inner();就不能访问了
访问格式:
1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,可以直接建立内部类对象。
格式

***当内部类在成员位置上,就可以被成员修饰符所修饰。可以继承其它类
比如,  private:将内部类在外部类中进行封装。
static:内部类就具备static的特性。
当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。
在外部其他类中,如何直接访问static内部类的静态成员呢?
Outer.Inner.function();
注意:当内部类中定义了静态成员,该内部类必须是static的。
     当外部类中的静态方法访问内部类时,内部类也必须是static的。
当描述事物时,事物的内部还有事物,该事物用内部类来描述。
因为内部事务在使用外部事物的内容。
肉类类可以写在类的任意位置上,成员、局部
局部内部类不能定义成静态的,不能被成员修饰符修饰,但没对象,没静态不能调用;
方法中的内部类访问此方法中变量,方法中变量必须是final(最终)修饰的
内部类定义在局部时,
1,不可以被成员修饰符修饰
2,可以直接访问外部类中的成员,因为还持有外部类中的引用。
但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。
a是局部变量,不会在对象中,但局部方法调用完就出栈了
内部类可以直接继承外部其它类,也可以实现接口

【匿名内部类】
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
new Inner().show();   内存类
  转换为new AbsDemo(){}.show();匿名内部类
3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
但凡看到匿名内部类,那是一个子类对象,匿名对象对方法只能调一次
5,匿名内部类中定义的方法最好不要超过3个。
匿名内部类是为了简化书写的
原创粉丝点击