浅谈继承
继承的基本语法:
                类结构的基本单位是属性和方法;
                继承是开发追求代码重用性的产物;
                在java中,被继承的类称之为父类,继承的类称之为子类;
                如:public class sub extends base{}
                1.如果sub与base位于同一个包中,sub继承base定义中的Public,protected,默认访问级别的成员变量与成员方法;
                2.如果sub与base位于不同的包中,sub继承base中定义的public,protected访问级别的成员变量与成员方法;
               【 一个类只能有一个直接父类;】
                如;public class a extends b,c,d{]//错误
               可以间接继承:
                如:public a extends b{}
                    public b extends c{}
                c是a的先祖,a可以拥有c中定义的成员属性和方法;
       
                           Object  <----Creature<-----Animal,Vegetation<-------Dog,Cat,Tiger
                                      |
                                      |                 
                                Genrenralization-->泛化               
                                      |                                                 |        
                                    【ER图】
 方法重载:
             在类中,方法的重载可以有多种方法,取决于参数 
              定义:在一个类中的方法有两个方法的方法名相同,但参数不同,我们说,一个方法是另一个方法的重载方法。
             约束条件:
                   方法名相同;
                   方法的参数类型,个数,顺序至少有一项不同;(这三者通常统称方法签名)
                   方法的返回类型可以不同; 
                   方法的修饰符可以不同;
方法覆盖(Override):
                 
                     定义;如果在子类定义的一个方法:他的名称,返回类型,参数签名与其父类中定义的一个方法的名称,返回类型,参数签名匹配,我们就称之为子类方法覆盖父类方法;
                     约束条件:
                          1.子类方法的名称,返回类型,参数签名一致,否则会报编译错误;
                          2.子类方法不能缩小父类方法访问的权限,否者编译错误;
                          3.子类方法不能抛出比父类方法范围更大,更多的异常,子类方法抛出的异常只能和父类方法抛出的相同,或是其父类异常的子类;
                          4.方法覆盖是存在于子类和父类之间的;
                          5.父类的静态方法不能被子类的非静态方法覆盖;父类的非静态方法不能被子类的静态方法覆盖;
                          6.子类可以定义与父类静态方法相同的静态方法,【(编译通过),但是这不叫方法覆盖,叫做子类隐藏父类静态方法 ;
  如 :public class Animal {
    public void trian(){
        //System.out.println();
    }
}
public class Dog extends Animal{
     @Override能够覆盖的标志
     public void trian(){
         System.out.println("小狗");
     }
}
                              
                        
public class Cat  extends Animal{
    【@Override//能够覆盖的标志】
 public void trian()
 {
     System.out.println("小猫");
 }
}
public class Test {
    public static void main(String []args){
        
        Animal animal=new Cat();//多态
        animal.trian();//小猫
          
           //  Animal animal=new Dog();
          //     animal.trian();//小狗
        
    }
    
}
    【@SuppressWarnings("unused")//禁止显示警告】
                        7.父类的抽象方法可以被子类的两种情况覆盖:1.子类实现了父类的抽象方法;2.子类覆盖父类的方法,也声明为抽象;
                        8.父类中的非抽象方法可以被子类的抽象方法覆盖;
 
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号