`

抽象类和接口

 
阅读更多
抽象类和接口:
接口是由抽象方法和属性构成且默认为抽象,公有。
   属性为常量,格式static final 属性名=要赋的值。
   方法: 格式 public 返回类型 方法名();
接口由于含有抽象方法,是不能实例化对象的。他的作用就是用来让普通类实现,或者由于要实现某类功能而选择性被抽象类引用。
接口例子:(1)
    public interface Student{
       public static final String name=" ";
       void getName();
       void setName();
       void study();
    } 
抽象类:介于普通类与接口之间的类。
  他可以包含普通方法和抽象方法。是一类特殊的类。
  抽象类中的抽象方法不是默认存在的,所以必须显式地写出关键字abstract
  如:(2)public abstract class Man{ //加上关键字abstract
       public String name;
      public abstract void eat();//抽象方法
      public  void setName(String n){//普通方法
        name=n;
      }
     }
  抽象类同样是不可以被实例化的。同样,若要将一个类避免生成对象,可以将其声明为抽象类。
关于抽象类和接口的继承关系:
  接口可以被接口继承(extends),也可以被抽象类和普通类引用(implements);
  抽象类可以被继承(extends)。抽象类引用接口通常是为了充当接口和普通类的桥梁。
  因为普通类引用接口时,要将接口内的所有抽象方法都重写为普通方法(因为要实例化对象)。所以有时接口内抽象方法很多,接口引用很多(类只能有一个父类,但是可以引用多个接口)。就会导致代码过多、不需要的方法也被重写。故抽象类将接口中的抽象方法重写为普通方法后,普通类就可以继承抽象类,以此只要将自己所需要的方法重写即可。
如下例:
   //定义一个人的接口Man
     public interface Man{
       public static final String name="张三";//常量,static final,需赋值
       public void setName(String n);//抽象方法,无方法体
       public String getName();
     }
   //定义一个带性别的人的接口Sman,继承自Man。
    public interface Sman extends Man{
       //定义特有的方法和属性sex和getSex();
       public static void String sex="male";
       public String getSex();
    }
    //定义一个学生类Student,引入自Sman
    public abstract class Student implements Sman{
      public String school;
      //重写Sman中的抽象方法,加入了自己的抽象方法
      public String getSex(){
            return sex;
      }
      public abstract String getSchool();
      public void setSchool(String s){
        school=s;
      }
    }
   //定义一个普通类UnStudent,继承了Student.将Student中的抽象方法重写
    public class UnStudent extends Student{
      public String getSchool(){
        return school;
      }
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics