抽象类(abstract)

abstract :抽象的,可以用来修饰类、方法。抽象的前提是必须实现继承。(父类只是提供了功能,父类的功能被子类实现。)

1.abstract修饰类:抽象类


    1)抽象类不可被实例化
    2)抽象有有构造器和构造方法(凡是类都有构造器和构造方法)
    3)抽象方法所在的类,一定为抽象类
    4)抽象类中可以存在非抽象方法

 

2.abstract修饰方法:抽象方法


     1)格式:没有方法体,包括{}。如:public abstract void eat();
     2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
     3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个“实体类”,即可以实例化
     4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍然含有抽象方法,那么子类必须定义为抽象类

 

3.abstract的限制


    不能用来修饰属性、构造器、private、final、static

 

4.abstract的基本要求

不能用于修饰private,static,final,也不能用于修饰属性和构造器

abstract class A {

	// 1.修饰属性时(因为属性在子类中时无法被改变的)
	abstract int age;

	// 2.修饰构造器(构造器不能被重写)
	public abstract A1() {
		
	}

	/*
	 * 3.和private并用时(子类不能覆盖(或者重写)声明为private的方法的) private 不能在其他类继承,所有不能被定义为抽象
	 */
	private abstract void method1();

	/*
	 * 4.和static并用时(static修饰属性,方法,类) 声明为静态的时候可以直接通过类来调用,但是通过类去调用这个方法的时候就会出现调空的情况
	 */
	public abstract static void mrethod2();

	// 5.和final并用时候(final使得方法不可继承,不可被重写,但是abtract是必须让方法进行重写,相互之间矛盾)
	public abstract final void method3();
}

5.abstract的应用

模式方法设计模式(抽象类的应用:用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的方法)

  • 父类中的确定和不确定因素

         1)确定:代码所花费的时间是确定的
         2)不确定:花费时间的代码是不确定的 

实例:

abstract class Template{
	/*父类中的确定和不确定因素
	  1)确定:代码所花费的时间是确定的
	  2)不确定:花费时间的代码是不确定的 
	  */
	
	abstract void code();
	public void spendTime() {
		long start = System.currentTimeMillis();
		
		code();   
		
		long end = System.currentTimeMillis();
		System.out.println("花费的时间:" + (end - start));
	}
}
class SubTemplate extends Template{
	public void code() {
		boolean flag  = true;
		for (int i = 0; i < 1000; i++) {
			for (int j = 0; j < 100; j++) {
				if(i == j) {
					flag = false;
					break;
				}
			}
			if(!flag) {
				System.out.println(i);
			}
		}
	}
}

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值