匿名对象+继承+方法重写/重载+多态详解

目录

匿名对象

继承

引出

概念

格式

特点:  

Java类是单继承

方法重写的五大原则

权限修饰符

分类

方法重写和方法重载

super关键字

基于子父类继承的执行顺序

继承优点

多态

概念:

分类:

优点:


匿名对象

new Person();

使用:

        1*new Person().属性

        2*new Person().方法

场景:

        只使用一次,

        错误操作

                new Person().name = "zs";

                sout(new Person().name);

        new对象都会开辟新的空间

继承

继承基于封装

引出

        开发了两个类  Dog  Cat

        问题

                两个类中存在大量的属性和方法的重置

        解决方法

                将重复的代码抽取到了Animal类中

                Dog  Cat继承自Animal类 从而复用父类中的属性和方法

概念

        将多个中重复的属性和方法提取到另一个类中,提取出来的类,就可以称之为父类(超类 基类)

之前的类称为子类(派生类);之前的类可以通过继承来将父类的属性和方法继承过来进行复用

格式

        父类:  没有特殊标识

        子类:  

                权限修饰符  class  子类类名  extends  父类类名{}

                extends是关键字

特点:  

        子类继承父类,可以将父类中的属性和方法继承过来,直接使用

        父类的私有属性和私有方法虽然子类可以继承,但是不可见

        子类无法继承父类的构造方法

Java类是单继承

         单继承

                优点

                        结构简单清晰明了

                缺点

                        复用性略低

         多继承               

                优点

                        代码复用性会更高一些

                缺点

                        可能会出现冲突  结构发生混乱

注意

        创建子类对象之前会先创建父类对象

方法重写  OverRide

        子类从父类继承过来的方法不满足子类的需求,此时子类可以在子类中重写该方法

        子类方法签名 和父类方法签名完全一致

        方法签名   :    方法名+参数列表

@Override注解  检查当前方法是否满足方法重写的要求

方法重写的五大原则

        两等两小一大

        两等

                1*子类方法签名和父类方法签名要完全一致

                2*如果父类方法的返回值类型为基本数据类型,void,  则子类重写的方法的返回值类型需和父类一致

        一大

                子类方法的权限修饰符必须大于或等于父类的权限修饰符

        两小

                1*如果父类方法的返回值类型为引用数据类型,则子类中重谢的方法返回值数据类型小于或等于父类的返回值类型

                2*如果父类方法抛出异常  则要求子类重写方法抛出异常类型要小于或等于父类的异常类型

权限修饰符

        限制程序的访问权限

分类

        public  >  protected  >  默认(default    friendly)  >  private

public  公共的       

protected 被保护的

默认  :  不写修饰符

private  : 私有的   

  

 外部类可以被public,默认修饰

方法重写和方法重载

        1*含义

                重载:  方法名相同   参数列表不同

                重写:  方法名相同  参数列表不同

        2*范围

                重载:  同一个类中

                重写:  在子父类

        3*方法

                重载:  overload

                重写:  Override

        4*使用场景

                重载:  功能丰富

                重写:  完成子类特有的需求

super关键字

this--当前对象

super--父类对象

应用场景:

        super();---super语句  调用父类的无参构造

        super.--父类方法

        super():  

注意

        1*子类的构造方法中默认会在第一行加super();调用父类的无参构造先创建父类对象

        2*super语句也必须放在首行

        3*this语句和super语句不能同时使用

                创建子类对象上会调用父类的构造方法先创建父类

NullPointerException空指针异常

        当对象为null时,调用了对象的属性或方法就会抛出空指针异常

基于子父类继承的执行顺序

        1*子父类    构造代码块  构造方法

                先父后子

        2*单独类    成员属性    构造代码块    构造方法

                成员属性    构造代码块    在构造方法之前执行

                成员属性,构造代码块的顺序取决于位置,在前的先执行

        3*基于子父类   成员属性   构造代码块    构造方法

                先父后子

                        父类的成员属性,构造代码块,构造方法

                        再子类的 成员属性,构造代码块,构造方法

继承优点

1*提高代码得到复用性

2*突出了程序的结构特征

3*提高了代码的可维护性

多态

基于封装和继承实现的

概念:

        体现多种形态

分类:

        编译时多态

                方法重载

                        编译期间可以根据实参的数据类型以及参数个数,顺序等来确定调用哪一个重载

        运行时多态

                方法重写+向上造型

                向上造型

                        将子类对象赋值给父类类型的引用

                注意:

                        1*向上造型中,无法通过父类类型来访问子类所特有的属性和方法

                                编译看左边的类型,运行看右边

优点:

        程序更加灵活

        提高程序的可扩展性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值