您的位置:首页 > 职场人生

黑马程序员_Java基础08天日志

2014-09-26 22:34 197 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1. 多态

class animals{}

class Catextends animals{}

class Dogextends animals{}

1.1 可以理解为事物存在的多种体现形态。

例:动物中猫,狗。

猫这个对象对应的类型是猫类型

• Cat x = new Cat();

同时猫也是动物中的一种,也可以把猫称为动物。

• animals y = new Cat();

• 动物是猫和狗具体事物中抽取出来的父类型。

• 父类型引用指向了子类对象。

1.2 多态的体现:父类或者接口的引用指向或者接收自己的子类对象。

例 :animals y = newDog();

1.3 多态的作用:多态的存在提高了程序的扩展性和后期可维护性

1.4多态的前提:1. 需要存在继承或者实现关系 2. 要有覆盖操作(子类重写父类的抽象方法或一般方法)

1.5 多态的弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。

1.6 如果想要调用猫的特有方法,如何操作?

强制将父类的引用。转型子类类型。向下转型。

1.7 错误:Animal a = newAnimal(); Cat c =(Cat)a;

千万不能出现这样的操作,就是将父类对象转成子类类型。我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。注意,多态至始至终都是子类对象在做着变化。

1.8 instanceof : 用于判断对象的类型。 对象 intanceof 类型(类类型 接口类型)

例:

public static void function(Animal a)//Animal a = new Cat();
{
a.eat();
/*
if(a instanceof Animal)
{
System.out.println("haha");
}
else
*/
if(a instanceof Cat)
{
Cat c = (Cat)a;
c.catchMouse();
}
else if(a instanceofDog)
{
Dog c = (Dog)a;
c.kanJia();
}
}


2. 多态的成员函数特点

在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。

在运行时期:参阅对象所属的类中是否有调用的方法。

简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。例 Fu f=new Zi(); 编译看Fu类,运行看Zi类

3. 多态中成员变量的特点

无论编译和运行,都参考左边(引用型变量所属的类,就是所属的类)。例 Fu f=new Zi() ; (Fu类是Zi类的父类) System.out.println(f.num); 输出结果都看Fu类里面的变量,Fu类里面的变量是多少就是多少。

4. 多态中静态成员函数的特点

无论编译和运行,都参考左边。

例:

class Fu
{
static void method4()
{
System.out.println("fumethod_4");
}
}

class Zi extendsFu
{
static void method4()
{
System.out.println("zimethod_4");
}
}


Fu f = new Zi();

f.method4(); 这个调用的是Fu类里面的静态方法;

Zi z = new Zi();

z.method4(); 这个调用的是Zi类里面的静态方法;

左边是什么类就看什么类里面的静态方法。

3.Objcet类

3.1 Object:是所有对象的直接或者间接父类,传说中的上帝。该类中定义的肯定是所有对象都具备的功能。

3.2 Object类-equals方法:两对象是否相同的比较方法。如果自定义类中也有比较相同的功能,则没有必要重新定义,直接使用Object类中equals方法即可。只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖或叫重写。

例: Demo d1 = new Demo(); Demo d2 = new Demo();

System.out.println(d1.equals(d2)); 输出结果是true

3.3 Object类-toString方法:打印对象的字符串表现形式。

例: Demo d1 = new Demo(4);

System.out.println(d1);//输出语句打印对象时,会自动调用对象的toString方法。打印对象的字符串表现形式。

输出的是Demo@+地址值。 例Demo@c17168

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: