下面介绍的是java面向对象编程的基础知识。
1:允许将子类的引用付给父类的对象,但子类中的那些不是从父类继承来的成员将不再可见。
例:
- Bus bus=new Bus();
- Car car=bus;
但是car实例不可以引用bus中的非继承域,如p载人数。
2:this和super
this引用当前类的变量或方法,super引用当前对象的直接父类的变量或方法
3:多态
同一个名字可以有多种实现状态,同一个类内部,可以拥有同名的,参数列表不同的方法,子类也可以有同父类同名的变量和方法。
1)覆盖(override),当子类继承了父类的同名无参函数时,子类新写的方法覆盖父类的方法,(返回类型必须相同)
2)重载(overload)继承了父类的同名有参函数,并且方法参数不同时称为重载,使该方法具有自己的特性。
3)重写(overwrite)当前类的同名方法,同一个类中可以有多个具有相同名字的方法,由传递给他们的不同个数和类型的参数来决定使用哪种方法。
覆盖和重载针对父类,重写针对子类。
4:抽象类定义
抽象类可以有自己的数据成员,也可以又非abstract的成员方法,也可以有抽象方法,抽象方法只有函数定义部分,没有函数体。
子类继承抽象类时必须实现所有的abstract方法。
5:接口
java只支持单一继承,为了实现多重继承,设计了接口。一个类只可以有一个直接父类,但是可以实现多个接口。
接口中的方法可以有参数列表和返回类型,但是没有任何方法体。
接口中可以包含字段,但是会被隐士地声明为static和final
接口中的字段只能被存储在该接口的静态存储区域内,而不属于该接口。
接口中的方法为public
扩展一个接口来生成新的接口使用关键字extends,实现一个接口使用implements.
java接口的方法只能是抽象的和公开的,java接口比java抽象类更抽象化。
6:接口与抽象类的区别
1)抽象类可以提供实现方法,接口不能提供。如果向抽象类中添加一个新方法,则它的所有子类一下子就得到了这个方法,但是接口,所有实现这个接口的类必须都再实现这个方法才行。
2)抽象类只能继承一个,而可以实现多个接口。
“默认适配模式”:java接口在最上面,然后紧跟着抽象类。
3)接口可以被嵌套,既可以被某个类嵌套,也可以被接口嵌套。
7:静态类
即定义了静态方法、静态变量、静态代码块的类。静态类不能被实例化,累的成员都是静态的。意味着告诉编译器,这个方法不需要创建一个此类的对象即可使用。费静态类一般需要实例话后才能操作。静态类在运行时加载到内存中,所以不用进行初始化,也没有实例,因此在类的内部也不能用this。
希望本文对你有帮助。
【编辑推荐】