全栈技术学习

(二)继承

2019-05-13  本文已影响0人  Mando度

1.继承写法

公共继承(父类)

package basicForMando;
public class Animal {
    private String name;
      private int id;
      //构造函数    如果未定义
      public Animal(String myName,int myid){
          name = myName;
          id = myid;
      }
      public void eat(){
       System.out.println(name+"正在吃");
      }
      public void sleep(){
          System.out.println(name+"正在睡");
      }
      public void introduction(){
          System.out.println("大家好!我是"+id+"号"+name+".");
      }

}


继承公共函数(子类)

package basicForMando;
//1.extends 父类
public class Penguin extends Animal {
//2.子类构造函数与父类构造函数参数应该相同,如果父类为隐式构造函数,子类可不定义
      public Penguin(String myName, int myid) {
          super(myName, myid);      
   }    
}

2.super&this

1.我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

2.super用法

  * 方法super.a();
  * 在子类构造函数写构造函数super();
  * 变量super.b
package basicForMando;
/*
 * 父类 
 * 成员变量 count
 * 构造函数 有参 无参
 *  普通函数    value()
 *  */
class Fu{
    String str="父类默认";
    int number  = 3;
    //父类构造函数
    Fu() {
        // TODO Auto-generated constructor stub
        System.out.println("fu constructor run ..无参父类.."   );
    }
    public void value() {
        // TODO Auto-generated method stub
        str ="父类value方法内";
    }
    Fu(int x){
        
        System.out.println("fu 构造函数 ..int.." + x  );
    }
    
}
class Zi extends Fu{
    //子类构造函数    写super 
    Zi(){
        
        System.out.println("zi  构造函数    ..无参.."+super.number  );
    };
    Zi(int x){
        super(x+1);
        System.out.println("zi 构造函数 ..int.." + x);
    };
     public void value() {
         str ="子类方法内";  
         System.out.println("str子="+str);
         super.value();      //调用父类的方法
          System.out.println("str="+str);   //这块str 为什么是父类的呀 
          System.out.println("父类str="+super.str);
          
     }
    
}
//继承
public class ExtendsDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Zi z= new Zi();
        //      Zi  z= new Zi(1);
        z.value();
        
    }

}

print(输出)

fu constructor run ..无参父类..
zi 构造函数 ..无参..3
str子=子类方法内
str=父类value方法内
父类str=父类value方法内

3.this关键字:指向自己的引用。

3.implements (多继承的特性)

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

public interface A { 
  public void eat(); 
  public void sleep(); 
} 
public interface B { 
  public void show(); 
} 
public class C implements A,B { }

4.final 修饰

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

//声明类
final class 类名 {//类体}
//声明方法
修饰符(public/private/default/protected) final 返回值类型 方法名(){
//方法体
}

:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final

5.重载和重写

class Animal{ 
  public void move(){ 
  System.out.println("动物可以移动"); 
  } 
} 
class Dog extends Animal{ 
  public void move(){ 
    System.out.println("狗可以跑和走");
  } 
} 
public class TestDog{ 
  public static void main(String args[]){ 
    Animal a = new Animal(); // Animal 对象 
    Animal b = new Dog(); // Dog 对象 
    a.move();// 执行 Animal 类的方法 
    b.move();//执行 Dog 类的方法 
  } 
}

上一篇 下一篇

猜你喜欢

热点阅读