继承的格式
在继承关系中,“子类就是一个父类”。也就是说,子类可以被当作父类看待
例如父类是员工,子类是讲师,那么“讲师就是一个员工”

定义父类的格式:(一个普通类的定义)
public class 父类名称{
//…
}
定义子类的格式:
public class 子类名称 extends 父类名称{
// …
}

public class Demo{public static void main(String[] args){//创建了一个子类对象Teacher teacher = new Teacher();//Teacher类当中虽然什么都没写,但是会继承来自父类Employee的method方法teacher.method();//创建另一个子类助教的对象Assitant assitant = new Assitant();assitant.method();}
}

继承中成员变量访问的特点
直接通过子类对象访问成员变量:
等号左边是谁,就优先用谁,没有则向上找。
间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁,没有则向上找。

public class Demo{public static void main(String[] args){Fu fu = new Fu();//创建父类对象System.out.println(fu.numFu);//只能使用父类的东西,没有任何子类内容Zi zi = new Zi();System.out.println(zi.numFu);//10System.out.println(zi.numZi);//20//等号左边是谁,就优先用谁System.out.println(zi.num);//优先子类,200//这个方法是子类的,优先使用子类的,没有再向上找zi.methodZi();//200zi.methodFu();//100}
}

区分子类方法中重名的三种方法
局部变量:直接写成员变量名
本类的成员变量:this.成员变量名
父类的成员变量:super.成员变量名

public class Zi extends Fu{int nun = 20;public void method(){int num = 30;System.out.println(num);//局部变量System.out.println(this.num);//本类的成员变量System.out.println(super.num);//父类的成员变量}
}

继承中成员方法的访问
在父子类的继承关系中,创建子类对象,访问成员方法的规则:
创建的对象是谁,就优先用谁,如果没有则向上找。

注意事项:
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类

继承中方法的覆盖重写
重写:
概念:在继承关系当中,方法的名称一样,参数列表也一样

重载:方法名称一样,参数列表不一样
方法的覆盖重写特点:创建的是子类对象,则优先用子类方法

方法覆盖重写的注意事项

  1. 必须保证父子类之间方法的名称相同,参数列表也相同
    @override:写在方法前面,用来检测是不是有效的正确覆盖重写
    这个注解就算不写,只要满足要求,也是正确的方法覆盖重写

  2. 子类方法的返回值必须小于等于父类方法的返回值范围
    小扩展提示:java.lang.Object类是所有类的公共最高父类
    java.lang.String是Object的子类

  3. 子类方法的权限必须大于等于父类方法的权限修饰符
    小扩展提示:public>protected>(default)>private
    备注:(default不是关键字,而是什么都不写留空)

继承中构造方法的访问特点

继承关系中,父子类构造方法的访问特点

  1. 子类构造方法当中有一个默认隐含的super()调用,所以一定是先调用的父类构造,后执行的子类构造
  2. 子类构造可以通过super关键字来调用父类重载构造
  3. super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造。

总结:
子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定的super调用,super只能有一个,还必须是第一个

super关键字的三种用法

  1. 在子类的成员方法中,访问父类的成员变量
  2. 在子类的成员方法中,访问父类的成员方法
  3. 在子类的构造方法中,访问父类的构造方法

this关键字的三种用法
4. 在本类的成员方法中,访问本类的成员变量
5. 在本类的成员方法中,访问本类的另一个成员方法
6. 在本类的构造方法中,访问本类的另一个构造方法

this(…)调用也必须是构造方法的第一个语句,并且是唯一一个
super和this两种构造调用,不能同时使用

Java学习笔记_继承相关推荐

  1. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  2. JAVA学习笔记_银行账户系统

    大家好,我是一枚JAVA学习的小白,初次来到SCND还请多多指教!!!! 最近上编程课学习都挺晚的,没时间逛论坛了,今天休息正好也赶上线上,所以来发点学习笔记,一起讨论学习.(看我这个标点符号就知道我 ...

  3. Java学习笔记_类和对象

    ·类:是一组相关属性和行为的集合,可以看成是一类事务的模板,使用事物的属性特征和行为特征来描述该类事物. ·属性:该事物的状态信息 ·行为:就是该事物能够做什么 ·对象:一类事物的具体体现,对象是类的 ...

  4. Java学习笔记3——继承

    继承 继承的好处:子类拥有父类的所有属性和方法,peivate修饰的无效:实现代码复用 class 子类 extends 父类 例如: class Dog extends Animal{...... ...

  5. Java学习笔记_抽象/接口

    抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束 抽象类:抽象方法所在的类,必须是抽象类.在class前面写上abstract 如何使用抽象类和抽象方法 不能直接创建new抽象类 ...

  6. Java学习笔记_字符串/静态static

    字符串的特点 字符串的内容永不可变 正是因为字符串不可改变,所以字符串是可以共享使用的 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组 创建字符串的常见3+1种方式 三种 ...

  7. Java学习笔记_匿名/ArrayList

    引用类型的一般使用步骤: 导包 import 包路径.类名称 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写 只有java.lang包下的内容不需要导包,其它的包都需要impor ...

  8. Java学习笔记_数组

    数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...

  9. Java学习笔记_选择语句

    switch语句格式 switch(表达式){case 常量值1:语句体1;break;case 常量值2:语句体2;break;...default:语句体n+1;break; } break关键字 ...

最新文章

  1. python触发点击事件_如何在python中模拟onclick事件?
  2. Xcode 中设置部分文件ARC支持
  3. 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
  4. 指向结构体的指针别名
  5. php编译成二进制文件_JVM字节码文件概述
  6. 细胞冻存及细胞计数的技巧
  7. Tomcat——访问错误[Invalid character found in method name. HTTP method names must be tokens]解决方案
  8. tinyhttp源码阅读(注释)
  9. C++中局部变量可以和全局变量重名吗?
  10. java.util.zip.ZipException: error in opening zip file
  11. cocos2d for android,cocos2d-x for android
  12. 微软 服务器系统,微软正在开发Windows Server 2022服务器系统
  13. 1月第4周安全回顾 移动安全受关注 ***威胁公共设施
  14. python函数手册中文,python函数中文手册.doc
  15. 高清卫星影像DEM数据免费下载,3款软件4个网站推荐收藏!
  16. mysql 多选数据类型_【多选题】Mysql定点数数据类型包括( )。【本题2项正确】...
  17. 安装系统user服务器登录失败,win10系统开机提示user profile service服务器登录失败的解决方法...
  18. android T 前台Service
  19. OpenCV-python 自制图片画框脚本
  20. [C#]Windows服务程序[转载西门吹雪的好文章]

热门文章

  1. 编写程序判断一个 vector<int> 容器所包含的元素是否9.20: 与一个 list<int> 容器的完全相同。
  2. MySQL 下载与安装
  3. 自动化运维之部署Puppet
  4. 【312】◀▶ arcpy 常用函数说明
  5. $.each()与$(selector).each()
  6. 微信小程序把玩(二十一)switch组件
  7. 《CUDA高性能并行计算》----2.2 需要知道的CUDA API和C语言拓展
  8. rtmp/rtsp/hls公网测试地址
  9. POJ_1062_(dijkstra)
  10. ​iIIegalArgumentException:the bind value at index 1 isnull