ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day01-继承

2022-04-23 16:01:04  阅读:146  来源: 互联网

标签:构造方法 继承 子类 day01 class 父类 方法 public


继承的概述
面向对象的三大特征(封装、继承、多态)之一
Java中的继承让类与类之间产生的了关系(子父类关系),子类可以拥有父类中的内容,同时子类自己还可以拥有特有的内容。

继承的格式
public class 子类 extends 父类{}// 父类肯定是先定义好的类
public class Zi extends Fu{}
父类:也可以称为超类、基类
子类:也可以称为派生类

继承的优缺点
优点
1、提高代码的复用性
2、提高代码的可维护性
3、继承是多态的前提之一
缺点
让类与类之间的关联更加紧密(耦合性更强),破坏了子类的独立性

继承的注意事项
1、Java中类的继承只支持单继承,不支持多继承(一个儿子只能有一个亲爹)
A类就被多个类(B和C类)同时继承
public class A {}
public class B {}
public class C extends A,B {}// ×,这是多继承,Java不支持
2、Java支持多层继承
public class A {}
public class B extends A{}
public class C extends B{}
3、一个类可以被多个类同时继承
public class A {}
public class B extends A{}
public class C extends A{}

继承中成员的特点
成员变量
就近原则(谁离我近我就使用谁)
首先找方法中的局部变量,如果有就使用局部变量
如果没有则找本类的成员变量,如果有就使用本类成员变量
如果没有则找父类的成员变量,如果有就使用父类成员变量,如果没有,则报错
构造方法
一定会先执行父类的构造方法,再执行子类的构造方法
在每一个构造方法的第一行默认有一行super();这样的代码,默认调用的是父类的无参构造方法
如果我们在构造方法中手动写上super(参数)或者this(参数)这样的代码来调用构造方法则默认的super();就会没有
this(参数)或者super(参数)调用本类或者父类构造方法的代码,必须位于构造方法的第一行有效代码
所以在一个构造方法中,不能通过出现这两行代码
成员方法
先找本类的方法,本类没有再找父类,父类也没有则报错

this和super关键字
this:记录的是本类的对象的地址,表示所在类的对象,谁来调用方法就表示哪个对象调用本类内容
1、调用本类的成员变量 this.成员变量( 可以区分局部变量和成员变量)
2、调用本类的成员方法 this.成员方法();
3、调用本类的构造方法 this(参数);
super:可以认为记录父类的对象的地址(表示父类的那片内存空间)调用父类内容
1、调用父类的成员变量 super.成员变量
2、调用父类的成员方法 super.成员方法();
3、调用父类的构造方法 super(参数);

方法重写
什么是方法重写(override)
方法重写也可以称为方法覆盖、方法复写
在有继承关系的两个类(子类和父类)中,子类对父类继承下来的方法进行重新改写的过程,
重新改写过程中,方法的声明一般不变,修改的是方法体内容。
方法重写的原则
方法的声明一般不变,但是也是可以改变的 ,一大两同两小
一大:子类重写的方法的权限修饰符必须大于等于父类方法的权限修饰符 权限修饰符 public > protected > 默认 > private
两同:
方法名必须相同
参数列表必须相同
两小:
子类重写的方法的返回值类型必须小于等于父类方法的返回值类型(针对引用类型有效,针对基本类型无效)
子类重写的方法的所抛异常必须小于等于/少于等于父类方法所抛异常,如果父类方法没有抛异常,则子类重写的方法一定不能抛异常
@Override注解
可以检测一个方法是否是重写的方法

方法重载(overload)和方法重写(override)的区别
重载:
同一个类中
方法名相同
参数列表不同
只和以上三个条件有关,和其他(权限修饰符、返回值类型等)的无关
重写:
有继承的两个类中
方法名相同
参数列表也要相同
和其他的(权限修饰符、返回值类型等)有关的

标签:构造方法,继承,子类,day01,class,父类,方法,public
来源: https://www.cnblogs.com/LinkiBieber/p/16182636.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有