您的位置:首页 > 编程语言 > Java开发

JAVA——abstract(抽象)

2016-04-19 20:43 260 查看

abstract的性质

1、abstract(抽象)可以修饰类、方法

2、如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。

3、abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。

4、abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。

5、final和abstract永远不会同时出现,因为abstract就是要被继承的,而被final修饰的类不可能被继承。

6、当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。

abstract void print();


如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。

如果一个类为抽象类,那么其中可能有非抽象的方法。

如果一个抽象类中有两个抽象方法,子类继承以后必须实现这两个抽象方法,如果只实现其中一个,那个子类还是抽象类。

抽象类VS一般类

1、抽象类和一般类没有什么太大的不同,该如何描述事物就如何描述事物,只不过,该事物出现了一些看不懂的东西。这些不确定的部分,也是该事物的狗功能,需要明确出现,但是无法定义主体。

2、抽象类比一般类多了抽象函数。就是在类中可以定义抽象方法。

3、抽象类不可以实例化。

4、抽象类中可以没有抽象方法。这样做仅仅是为了不让该类建立对象。

举例

要求:

假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性;姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。

abstract class Employee
{
private String name;
private String id;
private double pay;
public Employee(String name,String id,double pay) {
this.name = name;
this.id = id;
this.pay = pay;
}
public abstract void work();
}
class Manager extends Employee{
private int bonus;
public Manager(String name, String id, double pay,int bonus) {
super(name, id, pay);
this.bonus = bonus;
}
@Override
public void work() {
System.out.println("Manager work");
}

}
class Pro extends Employee{

public Pro(String name, String id, double pay) {
super(name, id, pay);
}

@Override
public void work() {
System.out.println("Pro work");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: