黑马程序员————java面向对象学习

来源:互联网 发布:现在淘宝聊天工具 编辑:程序博客网 时间:2024/05/14 10:59
                               ---------------------- android培训、java培训、期待与您交流! ----------------------

java面向对象的三大特征:封装,继承,多态。

面向对象就是指的编程语言是面向对象的,也就是说它把东西实例化为一个对象,比如天空,人,动物等等等,而封装是把对象装起来,与外界互不干扰,继承就是一个类继承另一个类的属性,比如毛具有动物的属性,而多态性就是多种表现形式,具体来说,可以用"一个对外接口,多个内在实现方法"表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。

 

根据学习,贴一个讲义练习:

 

 

/**
 *多态的表现形式:父类的引用指向子类的对象。
 *
 *Animal a = new Cat();//类型提升,向上转型。
 *
 *多态的前提:必须是类与类之间有关系,要么继承,要么实现。并且子类要复写父类中的方法。
 *
 *多态的利弊: 利,大大提高程序的扩展性。
 *    弊,只能使用父类的引用访问父类中的成员。
 *
 *成员函数在多态调用时。编译看左边,运行看右边。成员变量,无论编译或运行,都看左边。动态绑定。
 *静态的都看左边。叫静态绑定。
 */
 
 
 /*
 abstract class Animal {
  
  public abstract void eat();
 }
 
 
 class Cat extends Animal {
  
  public void eat() {
   
   System.out.println("eat fish");
   
   
  }
  
  public void cry() {
   
   System.out.println("MIMI");
  }
 }
 
 
 class Dog extends Animal {
  
  public void eat() {
   
   System.out.println("eat bone");
  }
  
  public void KanJia() {
   
   System.out.println("KanJia");
  }
 }
 
 
 public class TestDuoTai {
  
  public static void main(String[] args){
   
   function(new Dog());
  }
  
  public static void function(Animal a) {
   
   a.eat();
   
   if(a instanceof Cat){
    
    Cat c = (Cat) a;
    c.cry();
   }else if(a instanceof Dog){
    Dog d= (Dog)a;
    d.KanJia();
   }
  }
 }
 
 */
 
 
 /**
  *电脑的运行模拟。
  *
  *主板有自己的运行方法,可能用户还会对其他功能有需求
  如需要上网,听音乐,看电影。这时主板上必须要有使用这些设备的功能。
  
  这时可以用多态实现。所有功能的设备都实现特定的接口。
  在主板上用这些接口的引用。
  */
 
 
 
 //定义一个多功能设备的接口
 interface PCI {
  
  public abstract void open();
  
  public abstract void closed();
  
 }
 
 
 
  //定义一个主板类。
 
  class MainBoard {
   
   public void run() {
    
    System.out.println("MainBoard run");
   }
   
   //主板上有一个可以用多功能设备的方法
   
   public void UsePCI(PCI p) {
    
    if(p != null){//当不需要扩展功能时。PCI就不能使用。
     p.open();
     p.closed();
    }
    
   }
  }
 
 
  //多功能设备实现PCI接口
 
  class NetCard implements PCI {
   
   public void open(){
    System.out.println("NetCard open");
   }
   
   public void closed(){
    System.out.println("NetCard closed");
   }
  }
 
 
  class SoundCard implements PCI {
   public void open(){
    System.out.println("SoundCard open");
   }
   
   public void closed(){
    System.out.println("SoundCard closed");
   }
  }
 
 
  //定义一个主类,模拟电脑。
 
  public class TestDuoTai{
   
   public static void main(String[] agrs){
    
    MainBoard m = new MainBoard();
    
    m.run();
    m.UsePCI(null);
    //m.UsePCI(new NetCard());
   }
  }

                               ---------------------- android培训、java培训、期待与您交流! ----------------------
原创粉丝点击