抽象类
继承可以从原有的类里面派生出新的类,原有的类称为 基类或者父类,而新的类称为子类或者派生类。通过继承机制java中派生出的类不仅可以保留父类的方法功能,并且还可以拥有更多的功能。而在java中可以创建一种专门的类来当做父类,这种类称为抽象类。所以抽象类的作用就可以类似于模板,其目的是依据它的的格式来修改并创建新的类。
抽象类使用规则和一些定义:
包含一个抽象方法的类是抽象类
抽象类和抽象方法都要使用abstract声明
抽象方法只需声明不需要实现
抽象类必须被继承,子类(不是抽象类时)必须重写抽象类中的所有的方法
抽象类的定义格式:abstract
class 抽象类名称{
属性;
访问权限 返回值 方法名称(参数){} //普通方法
访问权限 abstract 返回
值类型 方法名称(参数);//抽象方法 抽象方法没有方法体
}
所以从格式上看的话抽象方法和普通方法并没有很大区别 只是 多了抽象的方法
例如:public class A {
private String name =”ming ”;
public String getName(){return name }
public void setName(String name ){this.name =name } //普通方法
public abstract void print(); //抽象方法
}
子类继承父类 覆写父类中抽象方法
Public class B extends A{
public abstract void print(){System.out.println(“你好”);}
}
根据以上可以知道 1.抽象类不能被final的
关键字修饰。因为被final声明之后就不能被继承而抽象类必须被子类覆写
2.显然同时抽象方法不能被private声明是同一样的原因
接口
接口可以
理解是一种特殊的类,这个类是由常量和抽象的方法组成的
定义格式:interface 接口名称{
常量 ;如(public static final)String name=”nihao ”;l
抽象方法;(public abstract )void print():
}同理接口中的方法也是public访问权限 不管有没有写。
public static final;public abstract可以不写 而在抽象类中抽象方法的abstract不能省。
子类通过implements实现接口,也必须覆写接口中的方法。从而摆脱了java中的单继承的局限性。