您的位置:首页 > 职场人生

黑马程序员------毕老师视频笔记第七天------面向对象(抽象类)

2014-05-18 22:07 316 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

当多个类中出现了相同的功能,但是功能主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。抽取出来的方法是一个抽象方法。

抽象方法调用是没有意义的,也就是它所属的类不应该建立对象,所以类也是一个抽象类。

抽象类的特点:

1.抽象方法一定定义在抽象类中

2.抽象方法和抽象类都必须用 abstract关键字修饰

3.抽象类不能用new关键字创建对象,因为调用抽象方法没有意义

4.抽象类中的方法要被调用,必须由子类覆写所有抽象方法之后,建立子类对象调用

如果子类只复写了部分抽象方法,那么该子类还是一个抽象类

抽象类和一般类没有太大的不同,该怎样描述事物就如何描述事物,只不过该事物中出现了一些看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体,通过抽象方法来表示。

抽象类比一般类多了抽象方法,就是在类中可以定义抽象方法,抽象类中可以不定义抽象方法,若是一个抽象类中没有抽象方法,则这个类不能建立对象。

抽象类不可以实例化。

abstract用来修饰类、方法。

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

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 double bonus;

Manager(String name,String id,double pay,double bonus)
{
super(name, id, pay);
this.bonus = bonus;
}

public void work()
{
System.out.println("Manager working~~~");
}
}

class Pro extends Employee
{
Pro(String name,String id,double pay)
{
super(name, id, pay);
}

public void work()
{
System.out.println("Pro working~~~");
}
}


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐