java基础--8

来源:互联网 发布:编程类书籍 mobi 编辑:程序博客网 时间:2024/06/06 03:48

多态
1、概念
 某一类事物具备的多种形态
2、扩展性
 多态的体现
  父类的引用指向了自己的子类的对象
  父类的引用也可以接受自己的子类对象
  public static void function(Animal a){a.eat()}(Cat a=new Cat())
 多态的前提
  必须是类与类之间有关系,要么继承,要么实现
  通常还有一个前提:存在覆盖
 多态的好处
  提高了程序的扩展性
 多态的弊端:
  只能使用父类的引用访问父类中的成员
 多态的应用
 多态的出现代码中的特点(多态使用的注意事项)
  
3、转型
 类型提升,向上转型 Animal a=new Cat();
 强制转换           Cat cat=(Cat)animal;
 instanceof
  if(animal instanceof Cat)...
 /*批量操作属于同一个体系的对象*/
public class Picaozuo
{
 public static void main(String[] args)
 {
  DoSomething ds=new DoSomething();
  ds.doSomething(new BaseStudent());
  ds.doSomething(new AdvStudent());
 }
}

abstract class Student
{
 abstract void study();
 
 public void sleep()
 {
  System.out.println("躺着睡");
 }
}

class DoSomething
{
 public void doSomething(Student s)
 {
  s.study();
  s.sleep();
 }
}

class BaseStudent extends Student
{
 void study()
 {
  System.out.println("基础班学习");
 }
 public void sleep()
 {
  System.out.println("坐着睡");
 }
}

class AdvStudent extends Student
{
 void study()
 {
  System.out.println("就业办班学习");
 }
}
4、在多态中成员函数的特点
 在编译时期,参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
 在运行时期,参阅对象所使用的类中是否有调用的方法
 总结:成员函数在多态调用时,编译看左边,运行看右边
5、在多态中成员变量的特点
 无论编译和运行,都参考左边(引用型变量所属的类)
6、在多态中静态成员函数、变量的特点
 无论编译和运行,都参考左边
7、主板 接口实例
 public class PciDemo
{
 public static void main(String[] args)
 {
  MainBoard m=new MainBoard();
  m.run();
  m.usePCI(null);
  m.usePCI(new NetBoard());
  m.usePCI(new SoundBoard());
 }
}

interface PCI//通过接口实现了程序的扩展性,即以后再有什么”卡“的话,只需要让这个”卡“在实现 PCI接口即可
{
 public void open();
 public void close();
}

class MainBoard
{
 public void run()
 {
  System.out.println("MainBoard run");
 }
 
 public void usePCI(PCI pci)
 {
  if(pci!=null)
  {
   pci.open();
   pci.close();
  }
 }
}

class NetBoard implements PCI
{
 public void open()
 {
  System.out.println("NetBoard run");
 }
 public void close()
 {
   System.out.println("NetBoard close");
 }
}

class SoundBoard implements PCI
{
 public void open()
 {
  System.out.println("SoundBoard run");
 }
 public void close()
 {
   System.out.println("SoundBoard close");
 }
}
8、Object--equals()
9、Object--toString()

原创粉丝点击