小白学习JavaSE-day07之抽象类

抽象类

1、什么是抽象类

抽象类:依然是一个类(描述事物群体),在继承中,父类将多个不同的子类中的共性内容进行抽取,形成多个子类的共同父类。在共同特定(属性、方法)进行抽象的时候,可能会出现某些体系结构中存在一些共性的行为(方法),但是不同的子类它们的共同的行为有些差异。这时共同行为依然需要在父类中描述,可是父类没有办法将方法的具体行为描述清楚。这时父类中就会有不具体的方法出现,这个类就变成抽象类。

2、抽象类代码体现

abstract:用来修饰类或者方法(普通),被修饰的类为抽象类,被修饰的方法为抽象方法

抽象方法:没有方法体的方法。

// 抽象类的定义
public abstract class 类名{
    //	定义变量
    //  定义方法
    
    //  抽象方法
    修饰符 abstract  返回值类型   方法名( 参数类型  变量名  ,  参数类型  变量名   ) ;    
}

类中出现抽象方法,这个类必须是抽象类,否则编译报错。

3、抽象类的举例

/*
 * 	类中有抽象方法,类就是抽象类
 */
abstract class Employee{
	/*
	 * 	所有员工都具有工作的行为,需要将工作行为抽取到员工类中描述
	 * 	但是每个员工的工作的具体内容不同,这时不能将方法体书写具体
	 */
	public abstract void work() ;
}
/*
 * 	程序员:工作内容:撸代码
 * 
 * 	当父类中有了抽象方法,子类继承父类之后,
 * 	子类需要将父类中的抽象方法全部复写
 * 	否则子类依然是一个抽象类
 */
class Coder extends Employee{
	public void work() {
		System.out.println("撸代码");
	}
}
/*
 * 	经理:工作:管理
 */
class Manager extends Employee{
	public void work() {
		System.out.println("管理");
	}	
}

public class AbstractDemo {
	public static void main(String[] args) {
		Coder c = new Coder();
		c.work();
		
		Manager m = new Manager();
		m.work();
	}
}

4、关于抽象类一些问题

  • 抽象类能够new对象吗?

    不可以。因为抽象类中可能会拥有抽象方法,如果能够new对象,那么通过引用可以调用抽象方法,而抽象方法没有方法体,那么调用抽象方法最终也不会有任何的结果。

  • 抽象类拥有构造方法吗?

    有,抽象类中的构造方法虽然不是给自己创建对象使用,但是子类在创建对象的时候,子类的构造方法中会有super语句找父类的构造方法。

  • 抽象类一定是父类吗?

    它是父类,但一定不是顶层父类(顶层Object类),它一定有子类,子类继承抽象类,然后在程序通过子类的对象使用方法。

  • 抽象类中可以没有抽象方法吗?

    可以。它的存在是为了不让创建这个类的对象。主要用在适配器设计模式中(类中的所有方法全部是空复写)。

  • 抽象关键字不能和哪些关键字共存?

    final:final修饰的方法为最终方法,子类不能复写,abstract关键字修饰方法必须要求子类复写。

    private:私有的方法只能在本类中使用,子类无法继承到。

    static:静态修饰的方法可以通过类名直接调用。而调用抽象方法没有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值