Java—面向对象(一)

    说到面向对象,就应该说说它的那几个核心的机制:继承,重写,多态,抽象,接口。它们是判断是否运用了面向对象编程的核心。接下来 用几个例子,看看它们的演变过程和它们之间的关系。

    继承:简单来说,子类自动拥有父类的所有方法和属性。

    举例:狗和猫都继承了动物的叫声。子类继承父类。

    

class Animal {
  private String name;
  public void setName(String name){this.name=name;}
  public String getName(){return name;}
  public void enjoy(){                       //动物叫声。。。
    System.out.println("叫声......");
  }

}

 class Cat extends Animal {
          private String eyesColor;                 //猫自己特有的方法。
	public String geteyesColor() {return eyesColor;}
         public void seteyesColor(String eyesColor)
        {this.eyesColor =eyesColor;}
}

class Dog extends Animal {
	private String eyesColor;               狗自己特有的方法。
          public String geteyesColor() {return eyesColor;}
        public void seteyesColor(String eyesColor)
       {this.eyesColor =eyesColor;}
 
}



public class Test {
    public static void main(String args[]){
    Cat c = new Cat();
    Dog d = new Dog();
     c.seteyesColor("猫是蓝眼睛");            //实现了自己的特有方法。
    d.seteyesColor("狗是黑眼睛");
         c.enjoy();                               //也继承了父类的方法。 
         d.enjoy();
         System.out.println(c.geteyesColor());
    System.out.println(d.geteyesColor());
    }
}
  结果:

 

    解释:狗和猫既有自己的特有属性和方法,也全部拥有了动物(父类)的方法和属性。这就是继承的特点。

    不过上述明显有缺陷的就是狗和猫都有自己独特的叫声,但是在这却都只是拥有了动物这个大众化的声音。该怎样改变呢?就用到了我们的重写。

    重写:在子类中可以根据需要对从基类中继承来的方法进行重写。看看下面的改写。

    

class Animal {
  private String name;
  public void setName(String name){this.name=name;}
  
  public String getName(){return name;}
  
  public void enjoy(){                       //动物叫声。。。
    System.out.println("叫声......");
  }

}

 class Cat extends Animal {
          private String eyesColor;                 
           public String geteyesColor() {return eyesColor;}
	
        public void seteyesColor(String eyesColor)
      {this.eyesColor =eyesColor;}
  
    public void enjoy() {                  //重写了父类动物的方法。
    System.out.println("猫叫声......");
  }
}

class Dog extends Animal {
	private String eyesColor;               
          public String geteyesColor() {return eyesColor;}
 	
        public void seteyesColor(String eyesColor)
       {this.eyesColor =eyesColor;}
  
      public void enjoy() {               //重写了父类动物的方法。
     System.out.println("狗叫声......");
  }
}

public class Test {
    public static void main(String args[]){
        Cat c = new Cat();
        Dog d = new Dog();
        c.seteyesColor("猫是蓝眼睛");            
        d.seteyesColor("狗是黑眼睛");
	      c.enjoy();                                
	      d.enjoy();
	      System.out.println(c.geteyesColor());
        System.out.println(d.geteyesColor());
    }
}
    结果:

    

    解释:狗和猫都重写了动物的Enjoy()方法,所以实现了自己独有的叫声。增加了灵活性。

    从上面可以看出重写是在继承上进化而来的,所以先继承再进行重写。

          PS:由于内容比较多,所以剩下的3个面向对象特点,在下篇博客中讲解。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值