抽象类和抽象方法以及接口
# 抽象类和抽象方法
首先抽象的含义就是就是抽取本质特征(共性),加以简单描述。
①抽象类:一个设计的非常抽象,以至于它都没有任何具体的实例,这便是抽象类。
②抽象方法:在方法头前面加abstract关键字修饰
public abstract void getArea{
类体;
}
一般形式:访问修饰符 abstract 返回类型 方法名(参数列表)
抽象方法要求在派生类中重写 抽象方法的类会自动变成抽象类
实例:重写会出现三角形,如果是抽象的,那三角形是实心的三角形
重要语法点:
(1):抽象类可以包含零至多个普通方法,也可以含零至多个普通方法;
(2):不论抽象类是否含抽象方法,其都不允许实例化
(3):若父类是抽象类,且子类不能成为抽象类
什么时候使用抽象方法?
当多个类有相同的方法,但方法体不一样,这时候就可以抽取出抽象方法
抽象类和抽象方法的特点:
1.抽象方法美没有方法体
2.如果一个类有抽象方法,那这个类必须定义为抽象类
3.抽象类可以有抽象方法和非抽象方法
4.抽象类不能继承new对象
5.继承抽象类,就必须重写抽象类里的所有抽象方法
抽象类的使用:
定义父类为抽象类,包含抽象方法
子类继承父类,实现父类的所有抽象方法
例子:
/**
The StockPurchase class represents a stock purchase.
*/
public class StockPurchase
{
private Stock stock; // The stock that was purchased
private int shares; // Number of shares owned
/**
Constructor
@param stockObject The stock to purchase.
@param numShares The number of shares.
*/
public StockPurchase(Stock stockObject, int numShares)
{
// Create a copy of the object referenced by
// stockObject.
stock = new Stock(stockObject);
shares = numShares;
}
/**
getStock method
@return A copy of the Stock object for the stock
being purchased.
*/
public Stock getStock()
{
// Return a copy of the object referenced by stock.
return new Stock(stock.getSymbol(), stock.getSharePrice());
}
/**
getShares method
@return The number of shares being purchased.
*/
public int getShares()
{
return shares;
}
/**
getCost method
@return The cost of the stock purchase.
*/
public double getCost()
{
return shares * stock.getSharePrice();
}
}
接口
1.接口的概念:如果一个类之中只是由抽象方法和全局变量所组成,那么在这种情况下不会将其定义为一个抽象类,而只会将其定义为接口,所以接口严格来说就属于一个特殊的类,而且这个类里面只有抽象方法与全局变量,要定义一个接口使用interface关键字来完成
举例:
interface A{//定义了接口
public static final String zsw="hello";//全局变量
//抽象方法
public abstract void print();
}
接口中所有的方法都是public;接口不能被实例化;接口必须在别处重写。
接口中的属性:public,final(没法被继承),static;
如果一个类想要实现接口需要在类头使用:implements关键字
public class RubberDuck extends Duck implements Quackable

接口只能继承接口不能继承类
由于接口里面存在有抽象方法,所以接口对象不可能直接使用关键字new进行实例化的操作,所以接口的使用原则如下:
1.接口必须要有子类,但是此时一个子类可以使用implements关键字实现多个接口;
2.接口的子类(如果不是抽象类),必须要覆写接口中的全部抽象方法;
3.接口的对象可以利用子类对象的向上转型进行实例化操作
interface A {// 定义了接口
public static final String MSG = "Hello";// 全局常量
// 抽象方法
public abstract void print();
}
interface B {
public abstract void get();
}
class X implements A, B {// X类实现A和B两个接口
@Override
public void get() {
System.out.println("B接口的抽象方法!");
}
@Override
public void print() {
System.out.println("A接口的抽象方法!");
}
}
public class Demo {
public static void main(String args[]) {
X x = new X();
A a = x;// 向上转型
B b = x;// 向上转型
a.print();
b.get();
}
}
抽象与接口的比较点:

总结:
1.接口与抽象类定义的不同;
2.接口作为标准用于解耦合以及不同层之间的连接桥梁;
3693




被折叠的 条评论
为什么被折叠?



