2021-05-27

继承的基本概念

继承是面向对象的三大特征之一,继承可以解决编程中代码冗余的问题,是实现代码重用的重要手段之一。继承是软件可重用性的一种表现,新类可以在不增加自身代码的情况下,通过从现有的类中继承其属性和方法,来充实自身内容,这种现象或行为就称为继承。此时新类称为子类,现有的类称为父类。继承最基本的作用就是使代码可重用,增加软件的可扩充性。

Java中只支持单继承,即每个类只能有一个直接父类。

继承表达的是”....is a...“的关系。

继承的语法如下:[访问修饰符]class<SubClass>extends<SuperClass>{    }

在Java中,继承通过extends关键字实现,其中SubClass称为子类,SuperClass称为父类或者基类。

访问修饰符如果是public,那么该类在整个项目中可见。

若不写访问修饰符,则该类在整个项目中可见。

在Java中,子类可以从父类中继承以下内容。

1,可以继承public和protected修饰的属性和方法,不论子类和父类是否在同一个包里;

2,可以继承默认访问修饰符的属性和方法,但是子类和父类必须在同一个包里;

3,无法继承父类的构造方法。

使用super关键字调用父类成员

super是用在子类中,目的只有一个,就是访问直接父类中被屏蔽的内容,进一步提高代码的重用性和灵活性。super关键字不仅可以访问父类的构造方法,还可以访问父类的成员,包括父类的属性、一般方法等。

通过super访问父类成员的语法格式如下:

访问父类构造方法:super(参数)

访问父类属性/方法:super.<父类属性/方法>

super只能出现在子类的方法和构造方法中

super调用构造方法时,只能是第一句。

super不能访问父类的privat成员。

实例化子类对象

在Java中,一个类的构造方法在如下两种情况下总是会被执行。

1,创建该类的对象(实例化)

2,创建该类的子类的对象(子类的实例化)

因此,子类在实例化时,会首先执行其父类的构造方法,然后才执行子类的构造方法。

子类继承父类时构造方法的调用规则如下:

1,子类构造方法没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身其他构造方法。(系统默认调用父类的无参构造方法)

2,子类构造方法通过super显式调用父类的有参构造方法。(执行父类相应构造方法,而不执行父类无参构造方法)

3,子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。

特别需要注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类传递,一直到执行顶级父类Object类的无参构造方法为止。

Object类

Object类是所以类的父类。

Object类被子类经常重写的方法

toString()    返回当前对象本身的有关信息,按字符串对象返回;

equals()      比较两个对象是否是同一个对象,是则返回true;

hashCode()返回该对象的哈希代码值;

getClass()   获取当前对象所属的类信息,返回Class对象。

Object类的equals()方法

比较两个对象是否是同一个对象,是则返回true;

操作符==

简单数据类型,直接比较值。如1==2;

引用类型,比较两者是否为同一对象。

1,Object类的equals()方法与==每区别

2,当有特殊需求,如认为属性相同即为同一对象时,需要重写equals;

3,java.lang.String重写了equals()方法的判断变为了判断其值。

方法重写

方法的重写或方法的覆盖

子类根据需求对从父类继承的方法进行重新编写

重写时,可以用equals.方法的方式来保留父类的方法

构造方法不能被重写

方法重写的规则:

1,方法名相同

2,参数列表相同

3,返回值类型相同或者是其子类

4,访问权限不能严于父类

5,父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法

6,子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(静态方法中无法使用super)

7,父类的私有方法不能被子类覆盖

8,不能抛出比父类方法更多的异常

重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无法

重写涉及的是子类和父类之间的同名方法,要求方法名相同,参数列表相同,返回值类型相同。

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值