黑马程序员_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 类型(类类型 接口类型)
例:
2. 多态的成员函数特点
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。例 Fu f=new Zi(); 编译看Fu类,运行看Zi类
3. 多态中成员变量的特点
无论编译和运行,都参考左边(引用型变量所属的类,就是所属的类)。例 Fu f=new Zi() ; (Fu类是Zi类的父类) System.out.println(f.num); 输出结果都看Fu类里面的变量,Fu类里面的变量是多少就是多少。
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培训、期待与您交流! -------
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培训、期待与您交流! -------
相关文章推荐
- 黑马程序员——黑马学习日志之三 Java基础03
- 黑马程序员—学习java基础8日志
- 黑马程序员 java基础 监听事件相关问题学习日志
- 黑马程序员 java基础 实现runnable接口问题 学习日志
- 黑马程序员——黑马学习日志之四 Java基础——数组
- 黑马程序员_Java基础05天日志
- 黑马程序员--java基础 GUI画图学习日志
- 黑马程序员——Java基础——字节流文件操作、键盘录入、转换流、流操作规律、异常日志等
- 黑马程序员_Java基础07天日志
- 黑马程序员—学习java基础5日志
- 黑马程序员_Java基础03天日志
- 黑马程序员—学习java基础10日志
- 黑马程序员 java基础 继承thread多线程学习日志
- 黑马程序员——JAVA基础知识学习日志(一)
- 黑马程序员—学习java基础6日志
- 黑马程序员——java基础:异常学习日志
- 黑马程序员_Java基础02天日志
- 黑马程序员 java基础 连接数据库学习日志
- 黑马程序员_Java基础10天日志
- 黑马程序员_java基础01天日志