抽象类和接口的一些小知识点

一,什么时候使用静态?
从两方面下手:
因为静态修饰的内容有成员变量和成员函数。
什么时候定义静态变量(又叫类变量)?
当对象中出现共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态存在于堆内存中。
分析:那么张三和李四都有姓名,那叫共享数据吗,不叫!那叫共享属性,是你们都有姓名的属性。
      每个人都有姓名和年龄,这不叫共享数据,而是都有自己不同的姓名和年龄。

什么时候定义静态函数?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

----------------------------------------
二,抽象类的特点:
1,抽象方法一定在抽象类中
2,抽象方法和抽象类都必须被abstract关键字修饰
3,抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法,建立子类对象调用。
   如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

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

抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法。抽象类不可以实例化。
abstract只能修饰类和方法,不能修饰变量。

特殊点:抽象类中可以不定义抽象方法,这样做的目的只是不想让该类建立对象。

模板方法设计模式:
在定义功能时,功能的一部分是确定的,有一部分是不确定的,而确定的部分在使用不确定的部分,这时就将不确定的部分暴露出去。由该类的子类去完成。

public class Test {
	public static void main(String args[])
    {

		SubTime st = new SubTime();
		st.getTime();

    } 



}
abstract class GetTime{
	public final void getTime(){//不希望子类复写此方法,用final修饰
		long start = System.currentTimeMillis();
		runcode();
		long end = System.currentTimeMillis();

	}
	public abstract void runcode();//抽象方法
}

class SubTime extends GetTime{

	@Override
	public void runcode() {
		for(int i=0;i<2000;i++){
			System.out.print(i);
		}
		
	}
}


 

----------------------------------------------
三,接口,初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式类表示。
class用于定义类,interface用于定义接口。

接口中,
    常量用public static final修饰
    方法用public static修饰
接口是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类,用abstract修饰。
接口可以被类多实现,也是对多继承不支持的转换形式,java支持多实现。

为什么java不支持多继承,因为子类可能会覆盖父类的方法,而父类中可能有相同的方法,覆盖的时候不知道覆盖哪一个;而接口可以多实现,因为接口中的方法都是抽象的,没有方法体,子类无论怎么去具体实现都可以。
接口和接口之间可以多继承,因为接口里方法没有实现体。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值