本文将通过案例、文字详细介绍 面向对象的————抽象类及抽象类方法
若有细瑕 感谢指正!
今天介绍的是 面向对象中的——————抽象类及抽象方法
一、抽象的特点:
1、抽象方法一定在抽象类中
2、抽象方法和抽象类都必须被abstract关键字修饰
3、抽象类不可以用new创建对象,因为调用抽象方法没意义
4、抽象类中的方法要被使用,必须由子类重写起所有的抽
象方法后,建立子类对象调用
5、如果子类只覆盖了部分抽象方法,那么该子类还是一个
抽象 类
二、抽象类的要求:
抽象类和一般类没有太大的不同
1、该怎么描述事物,就如何描述事物,只不过,该事物出现一些听到懂 实例不了的
2、这些不确定的部分,也是该事物的功能,需要明确出现,但无法定义主体
3、主体由子类去定义 去延伸说明 就像父类说要起名字 子类说具体起什么名字叫什么
通过抽象方法来表示
4、抽象类不可实例化
5、抽象类比一般类多个抽象函数 就是在类中可以定义抽象方法
6、注意 抽象类中可以不定义抽象方法 这样做仅仅是 不让该类建立对象
7、当多个类出现相同功能,但是功能主体不同,这时可以进行向上抽取这时,只抽取功能定义,而不抽取功能主体
三、关键字 abstrac:
抽象类 必须要加 abstract(抽象) 关键字修饰
abstract class major {
abstract void study();
void () {
System.out.println(“要拥有专业学习能力”);
}
}
四、案例:
1、抽象类练习
1.1、需求 我们在开发一个系统时需要对员工建模,员工包含3个属性;姓名、工号、以及工资、经理也是员工,除了含有员工的属性外,另外还有一个奖金属性,
1.2、请使用继承的思想设计出与员工类和经理类 ,要求类中提供必要的方法进行属性访问成员
1.3、分析 员工类 name id pay 经理类: 继承了员工 还带有自己特有的奖金属性 bonus
还有其他员工的属性 继承了父类
abstract class member { // 成员 父类
private String name;
private String id;
private double pay;
member(String name, String id, double pay) { // 初始化属性
this.name = name; // this. 指向自己
this.id = id;
this.pay = pay;
}
public abstract void work(); //抽象类 不能定义方法
}
class manager extends member { // 成员里的经理
private double bonus; //带有自己的特有的属性
manager(String name, String id, double pay, double bonus) { // 继承父类 增加自己的奖金属性
super(name, id, pay); // super( ) 引用父类
this.bonus = bonus; // this. 指向自己
}
public void work() {
System.out.println("经理工作");
}
}
class other extends member { // 其他成员
other(String name, String id, double pay) {
super(name, id, pay);
}
public void work() {
System.out.println("其他人的工作");
}
}
class lianxi {
public static void main(String[] args) {
System.out.println("Hello world");
}
}