继承—基础知识

   现实社会中,一些事物往往会拥有两个或两个以上事物的属性,例如:一个人可以既是作家,又是画家,还可以是企业家等等。软件,是虚拟现实的。那么,在计算机编程中,我们如何解决这类问题呢?——继承!
       例如:1 sai是一名湖南大学软件工程的学生,那么我们可以说2 sai是一名湖南大学的学生,3 sai是一名大学生,4 sai是一名学生。对吧?
       我们予以编号(如上)。1对于2、2对于3、3对于4,便是继承的关系,前者具有后者的所有属性。同时,我们可以说:1既继承了2,又继承了3,还继承了4。这便是多重继承,1继承了2、3、4的所有属性。
        前者成为子类,后者称为父类。但只能说4是3的父类,而不能说4是2或1的父类。我们规定一个类只能够继承一个父类。
       在Java中,我们用extends表示继承关系。例:
        public class A extends B{    }    A继承B
       我们来看这样一段代码:
       public class B{
              public void setName(String name){
this.name = name;
}
              public void study(){
System.out.println(name+"在学习!");
}
      }
        public class A extends B{
           public void play(){
                  System.out.println("大学生特有的玩的方法");
           }   

      }
             如果c是A中定义的变量,那么c可以实现B中setName、study,这便是继承的体现。同时,c还可以实现A中play,这是A中变量所独有的。
             如果在B中加入以下的代码: B d = A d;
             即是把A类型的d转换成了B类型,这便是——自动转型。
             那么,我们又在B中加入
            public void study(String luo){
System.out.println(name+"在学习!"+luo);
}
           这样在B中,有两个study,但他们的形参是不一样的。这便是——重载。
           我们把A中的“大学生特有的玩的方法” 改成“这是大学生特有的玩的方法”,这便是——重写。当然,你还可以改成其他任意和原内容不同的即可。
          在A中加入
           public void study(){
System.out.println("在学习!");
}
          那么我们在B中定义的d具有study行为时,会执行A中的 “在学习!”,而不是B中的study。
          假如我们在B中定义一个变量e,对于e和d而言,他们具有相同的类型,相同的行为,但e执行的却是B中的study。这种便是多态了。
          父类,其实也是类,它定义了行为。那没有定义行为的父类呢?我们便把它们叫做——接口。
          例:
          public class AA{
               public void eat();
          }                                     它没有具体定义eat的行为。
         public  class BB interface AA{   }
         接口的继承用interface,且在AA中必须把AA中的所有行为都给具体定义了。
         与父类不同的是:
            A. 一个类可以实现多个接口
   例:interface E;
      interface F;
      class G implements E,F;
          B. 一个接口可以继承多个接口
    例:interface H extends E,F;

你可能感兴趣的:(编程,C++,c,虚拟机,C#)