Java-继承特性

继承的特点:

1、提高了代码的复用性。

2、让类与类之间发生了关系,有了这个关系,才有了多态的特性。

(注意:千万不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承,所属关系 is a。)

子父类出现后,类成员的特点:
1、变量;2、函数;3、构造函数。

举例【1】:变量(此函数打印出来的结果是5....4 )

class Fu{
  int num1=5;  
}
class Zi extends Fu{ 
int num2=4; 
}	
class StudentDemo2{
public static void main(String[] args) {
  Zi z=new Zi();
       {
          System.out.println(z.num1+"...."+z.num2);
       }
             }
                    }

举例【2】:函数(此函数的运行结果是zi show java)

当子类出现和父类一模一样的函数时;子类对象调用该函数,会运行子类函数的内容;如同父类的函数被覆盖一样,这种情况是函数的其中一个特性:覆盖(重写)

当子类继承父类,沿袭了父类的功能到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致时;没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容。

class Fu{
void show(){       
      System.out.println("fu show");
   }
void speak(){      
     System.out.println("vb");
  }
}
class Zi extends Fu{	
void show(){     
            System.out.println("zi show");
           }
void speak(){
             System.out.println("java");
            }
          }
class StudentDemo2{	
    public static void main(String[] args){	
		Zi z=new Zi();
		z.show();
		z.speak();
  }
}

举例【3】:构造函数(此函数运行的结果是:haha lala)

结论:
子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类每一个构造函数内的第一行都有一句隐式super()。

当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。

class Fu{
Fu(){
System.out.println("haha");
     }
         }
class Zi extends Fu{
Zi(){

//这里有一个隐藏的的语句:super();默认要先访问父类中空参数的构造函数。
System.out.println("lala");
     }
         }
class StudentDemo3{
   public static void main(String[] args){
           Zi z=new Zi();
                     }
                }
posted @ 2015-04-16 20:56  泡沫love夏  阅读(665)  评论(0编辑  收藏  举报