JAVA学习【知】继承

来源:互联网 发布:淘宝刷单清洗 编辑:程序博客网 时间:2024/04/29 21:45

 继承的定义
1.JAVA中是有extends关键字实现类的继承机制
2.通过继承,子类自动拥有基类的所有成员(成员变量和方法)
3JAVA支持单继承,不允许多继承。
4.一个子类只能拥有一个基类,一个基类能派生出多个子类(这就相当于我们现实生活中,一个孩子只有一父亲,但一个父亲可能养着一群孩子)。

 


我们用一个例子来论证以上的定义:

 

  1. class Animal{
  2.     String name;
  3.     public void setname(String name){   //设置父类名字
  4.         this.name=name;
  5.     }
  6.     public String getname(){
  7.         return name;                    //返回名字
  8.     }
  9. }
  10. class Dog extends Animal{           //继承Animal类
  11.     int age;
  12.     public void setage(int age){            //Dog类自己的方法
  13.         this.age=age;
  14.     }
  15.     public int getage(){            
  16.         return age;                 //返回DOG的年龄
  17.     }
  18. }
  19. public class TestExtends {
  20.     public static void main(String[] args) {
  21.         Animal a= new Animal();
  22.         Dog d = new Dog();
  23.         a.setname(" Animal name");      
  24.         d.setage(5);    
  25.         d.setname("dogname");
  26.         System.out.println("name:"+a.getname());
  27.         System.out.println("Dog's name:"+d.getname());  //dog所继承的
  28.         System.out.println("Dog's age:"+d.getage());        
  29.     }
  30. }
  31. //由于Dog类继承了父类 所以就继承了父类的方法不必再子类定义,而本身独有的方法是父类不可调用的。
  32.                               

 

 

现在我们来看下继承中的构造方法
定义:

1.子类的构造的过程必须调用其基类的构造方法。
2.子类可以在自己的构造方法中使用super(参数列表)调用基本的构造方法。
3.如果调用super,必须写在第一行。
4.如果子类的构造方法中没有显示地调用其基类的构造方法则系统默认调用基类无参数的构造方法。
4.如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

继承的好处:
 可以享有父类的方法,得到自己想要的东西,不必再次定义。程序变的更加灵活。

  1. 举例:
  2. class Dog {
  3.     String name;
  4.     Dog(){
  5.         System.out.println("i am Dog");
  6.     }
  7.     Dog(String name){
  8.         System.out.println("DOG's name:"+name);
  9.     }
  10. }
  11. class Cat extends Dog{
  12.     Cat(){
  13.         super();                            //调用父类构造方法,也可省略,则默认为空的构造方法
  14.         System.out.println("I am Cat");
  15.     }
  16.     Cat(String name)
  17.     {                                       //此处没显示调用父类构造方法,所以默认为空的构造方法
  18.         System.out.println("Cat'sname:"+name);
  19.     }
  20. }
  21. public class TestSuper {
  22.     
  23.     public static void main(String[] args) {
  24.         Dog d = new Dog();
  25.         new Dog("dogname");
  26.         Cat c = new Cat();
  27.             new Cat("MIMI");
  28.     }
  29. }
  30. i am Dog               //父类 无参构造方法返回值
  31. DOG's name:dogname    //有参构造方法返回值
  32. i am Dog             //继承的子类调用的父类构造方法返回的值
  33. I am Cat            //子类构造方法返回值
  34. i am Dog           //继承的子类调用的父类构造方法返回的值
  35. Cat'sname:MIMI    //子类构造方法返回值
  36. 通过对继承的学习能让我们增加程序灵活性,更加方便,对以后学习多态也起着重要的作用。

 

原创粉丝点击