4月13日学习总结

Java三大特性之----多态

1.   Object类和抽象
 Object是所有类的祖宗,是最开始的父类;

  例如我们写一个pet类,并没有继承任何类,但java默认它继承了Object类:

  public class Pet extends Object{ // extends Object隐藏继承
        //方法体
     }
  
 Object类被继承时里面的方法都被下面的类所继承:

方法                             
1.toString() : 返回当前对象本身有关信息,按字符串对象返回
2.equals()  :   比较两个对象是否是同一对象(包括内存地址),是则返回true
3.hashCode() :返回该对象的哈希代码值
4.getClass()  : 获取当前对象所属的类信息,返回class对象  

我们可以根据需求重写object提供给我们的初始方法
注:我们前面string字符串对比时使用过equals方法,不过对比的是字符串的内容并不比较内存地址,还使用过字符串输出语句,将字符串内容输出到显示设备中,相当于System.out.println(s1.toString());但我们输出的是字符串内容,并不是对象有关信息。
原因:使用String的时候它已将将这两个方法重写了,不再是Object给我们的初始
equals
object中equals就是用==进行两个对象之间的对比,所以object提供给我们的equals方法和==没区别;
当有特殊需求,如认为属性相同即为同一对象时我们就需要重写equals方法;
我们调用equals对比两个字符串所用的equals是经过string重写了的,对比的是字符串内容,
object提供给我们的tostring方法是返回当前对象的有关信息,按字符串对象返回;
抽象修饰符:关键字 abstract
例:                     
父类抽象类:public abstract  class Pet{ }   
父类创建一个抽象方法          public abstract void toPlay( );     //没有方法体
子类必须实现父类的抽象方法 public  void toPlay(){ }    注:除非子类也是抽象类,则不用实现
特点:
抽象类:实例抽象类毫无意义,是天生的父类;只是用来被继承;
抽象方法:没有方法体,必须存在于抽象类中,必须被子类实现(重写),除非子类也是抽象类

2.多态

多态的意义:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。   赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

实现多态的两种方式:

使用父类作为方法的形参

使用父类作为方法的返回值

注:方法重写是实现多态的根本

关键字---instanceof

使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系

如:if(pet instanceof Dog){Dog dog =(Dog)pet ;}     //只有符合是继承上下级关系,才进行向下类型转换

A instanceof B ,返回值为boolean类型,用来判断A是否是B的实例对象或者B子类的实例对象。如果是则返回true,否则返回false。
如:Person p = new Person() ; //
Man  m = new Man() ; //Man是Person的子类
Animal a = new Animal() ;
m instanceof Man //返回true
m instanceof Animal //返回false
m instanceof Person //返回true
类型转换

1、向上转型
1.父类引用指向子类对 象,而子类引用不能指向父类 对象。
2.把子类对象直接赋给父类引用叫upcasting向上转型 ,向上转型不用强制转换。
通俗地讲即是将子类对象转为父类对象,此处父类对象可以是接口

父类类名 引用变量名=new 子类类名 ();  
例:Pet pet =new Dog();
2、向下转型

将一个指向子类对象的父类引用赋给一个子类的引用,即父类类型转换为子类类型,需强制类型转换;在向下转型时,如果没有转换为真实子类类型,会出现类型转换异常

子类类名 引用变量名= (子类类名)父类的引用变量名
例: Dog dog =(Dog)pet ;

猜你喜欢

转载自blog.csdn.net/chenjingqi101/article/details/79945186