(基础)java中的抽象类,抽象方法

类中只要有抽象方法,该类必须也是抽象的,也必须使用abstract修饰类

抽象类不能实例化,子类必须全部重写父类中的抽象方法才能创建对象

 

抽象类的构造方法:可以对子类对象进行初始化,或定义一组固定的方法调用逻辑;

抽象类中可以没有抽象方法,定义抽象的目的:不让类创建对象(该类中某些方法体为空),创建对象无意义;

抽象关键字不能与private,final,static共存;

 

 

 

 

抽象类的应用:

父类定义好方法的调用逻辑,但是方法的具体实现交给子类去完成

 

示例

 

Parent类

abstract public class Parent {
	
	
	Parent() {
		//调用父类中固定好的处理逻辑
		fixedMethodInvoke();
	}
	
	/**
	 * 调用逻辑固定:父类中的调用逻辑已经是确定好的
	 * 方法的实现不同:method()由不同子类进行不同的实现
	 */
	private void fixedMethodInvoke() {
		say();
		method();
		hello();
	}
	
	public void say() {
		System.out.println("say");
	}
	
	public void hello() {
		System.out.println("hello");
	}
	
	//具体逻辑由子类来实现
	abstract public void method();
	
}

 

ChildA

public class ChildA extends Parent {

	@Override
	public void method() {
		System.out.println("ChildA.method()");
	}

	
}

 

ChildB

public class ChildB extends Parent {

	@Override
	public void method() {
		System.out.println("ChildB.method()");
	}

	
}

 

测试

public class Test {
	public static void main(String[] args) {
		new ChildA();
		System.out.println();
		new ChildB();
	}
	
	/*
		say
		ChildA.method()
		hello
		
		say
		ChildB.method()
		hello
	 * */
}

 

 

 ========================================================================

 继承+抽象 ---> 设计

 继承:侧重属性、方法的复用;

 抽象:在继承的前提下,侧重于方法的定义,具体实现交给子类完成;

 接口:侧重于功能的扩张,可与继承结合使用,达到更强的功能;

 

public abstract class Employee {
	private String name;
	private String id;
	private double salary;
	
	public Employee(String name, String id, double salary) {
		this.name = name;
		this.id = id;
		this.salary = salary;
	}
	
	public abstract void work();
	
}

 

public class Programmer extends Employee {
	
	public Programmer(String name, String id, double salary) {
		super(name, id, salary);
	}
	
	@Override
	public void work() {
		System.out.println("普通程序员在干活");
	}
	
}

 

public class Manager extends Employee {

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

	@Override
	public void work() {
		System.out.println("经理在设计程序的架构");
	}

}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值