Java三大特性之继承+多态

时间:2021-11-01 21:55:06

Java中面向对象3大特性中,继承和多态还是挺重要的,也是面试题中常考内容之一。

一.继承:extends关键字,父类最好用protected,构造方法有参和无参均写上,注意方法重写和重载

定义:从父类中派生出的子类,子类具有父类的属性和方法,也有父类没有的个性方法,是is-a的关系,也就是说父类是一般,子类是特殊。

特点:1.关键字:一般采用SubClass  extends  SuperClass的方式,带有extends关键字。

            2.修饰符:当父类被private修饰符修饰时,父类属性和行为可以被子类所继承,但是只有父类可以访问其属性和方法,子类不能访问父类的私有属性和方法;

                                当父类不被修饰符修饰时,父类属性和行为可以被子类继承,只有同一包类和父类能访问父类的私有属性和方法;子类不能访问父类的私有属性和方法;

                                当父类被protected修饰符修饰时,父类属性和行为可以被子类继承,同一包的类父类及其子类可以访问父类的私有属性和方法

                                当父类被public修饰符修饰时,父类属性和行为可以被子类继承,同一包的类父类及其子类其他包的类均能访问其属性和方法。

            3.构造方法:若父类无构造方法或者只有一个无参构造方法,子类会自动调用其无参构造方法,无需显示声明;

                                          父类构造方法:public  SuperClass(){  this.name=name;}

                                          子类构造方法:默认调用无参构造方法

                                   若父类只有有参构造方法,子类在构造方法中必须显式调用其有参构造方法,否则编译出错;

                                           父类构造方法:public SuperClass(String name){  this.name=name;}

                                           子类构造方法:public SubClass(String  name ,int age ){super(“张三”) ; this.age=age;}

                                   若父类有无参构造方法也有参构造方法,子类在构造方法中如果不显式声明,那调用的是父类的无参构造方法;

                                           父类构造方法:public SuperClass(  ){      }  ;    public SuperClass( String name){ this.name=name;}

                                           子类构造方法:默认调用无参构造方法 

总结:构造方法灵活多变,根据具体需要外界引入的值作为有参构造方法,父类最好有参和无参均写上,子类引入私有属性时,带上super(父类属性),然后定义自己属性。

Java三大特性之继承+多态

            4.     个性方法:(方法重载和方法重写)

            1)  方法重写(方法覆盖):子类和父类的返回类型方法签名(方法名+参数列表)一致;参数列表(参数类型+参数数量)

父类方法:

Java三大特性之继承+多态

Java三大特性之继承+多态

子类方法:

Java三大特性之继承+多态

Java三大特性之继承+多态


Java三大特性之继承+多态

           2)方法重载:同一类中,方法名一致参数列表不同与返回类型无关

Java三大特性之继承+多态

Java三大特性之继承+多态 

          5.优点:提高代码复用性,让父类和子类产生联系




二.多态:

定义:同一消息根据发送对象不同,采取不同的行为方式

特点:要有继承,要有方法重写,父类引用指向子类对象;

好处:对已存在代码具有可替换性;可扩充性--可新增子类;向子类提供公共接口;灵活性或者简化性

父类:

Java三大特性之继承+多态

Java三大特性之继承+多态

子类:----------继承和重写

Java三大特性之继承+多态

外部调用:-------父类引用指向子类对象,但是子类的个性方法无法调用

Java三大特性之继承+多态Java三大特性之继承+多态