继承

1. 继承中的属性

1.1 继承中不同名属性访问

​ 子类可以直接调用父类中的非私有属性

1.2 继承中同名属性访问

​ 在子类中定义了同名的成员变量,在子类中,根据就近原则来进行访问

class Fu{int x = 10;
}
class Zi extends Fu{int x = 100;public void method(){System.out.println(x);//调用父类的//System.out.println(super.x);}
}
public class Demo{public static void main(String[] args){Zi zi = new Zi();zi.method();//100}
}

​ 如果子类中有成员变量与父类中成员变量同名,还想调用父类的属性,则需要在调用时加上super–>super.x。

2. 继承中的方法

2.1 继承中构造方法关系

​ 在初始化子类数据前,必须先完成对父类数据的初始化;

​ 实例化子类对象时,会隐式调用父类无参构造方法(在构造方法第一句默认加上super(),默认访问父类的空参构造);

​ 如果需要调用父类的有参构造,则需要通过显式super(参数列表)进行调用;

​ 当显式super(参数列表)进行调用父类带参构造时,原隐式调用父类无参构造消失;

​ 父类定义了带参构造后无参构造消失,子类(继承)无参构造会报错(因为有隐式调用super(););

​ 构造方法中不能同时存在this()和super(),两个在语法上都要求放在构造方法的第一行;

​ 一个类没有显示继承父类,则默认继承Object类

练习:Java继承中的构造代码块和构造方法执行顺序–层次初始化

class Fu {static {System.out.println("静态代码块Fu");//随类而加载,先加载父类的静态代码块,后执行子类的静态代码块}{System.out.println("构造代码块Fu");//随对象创建而执行(多次)//对象的初始化过程:父类对象的初始化过程(构造代码块 -> 构造方法)>  子类对象的初始化过程(构造代码块 -> 构造方法)。这步(构造代码块)是随类的加载而加载。}public F() {System.out.println("构造方法Fu");}
}
class Zi extends Fu {static {System.out.println("静态代码块Zi");}{System.out.println("构造代码块Zi");}public Zi() {System.out.println("构造方法Zi");}
}
public class Demo{public static void main(String[] args){Zi zi = new Zi();}
}

2.2 继承中不同名方法访问

​ 子类可以直接调用父类的非私有方法,也可以调用子类的特有方法,但是父类不能调用子类的特有方法。

2.3 继承中同名方法访问

​ 在子父类中出现方法名相同,但两个方法的实现内容不一样的

重写:

​ 在父类无法满足子类需求时,就可以使用重写;

​ 在具有继承关系的类中,存在同一个方法名,参数相同,返回值类型相 同的方法,就是方法重写(override);

​ @Override注释可以验证子类方法是否对父类方法重写正确;

​ 父类的static方法和private方法无法被重写;

​ 方法在重写时,权限(权限修饰符)不能越来越小。

3. 继承的特点

3.1 单继承

​ 一个子类只能继承一个父类

3.2 多层继承

​ 子类可以使用父类成员,同时也可以使用祖类成员

代码块

1. 局部代码块

1.1 语法、定义位置

{...}//定义位置:方法内

1.2 作用

​ 限制局部变量的生命周期/使用范围(大括号外失效)

2. 构造代码块

2.1 语法、定义位置

{...}//定义位置:类中,方法外

2.2 作用

​ 将多个构造函数中相同代码定义在构造代码块中,从而减少代码冗余

2.3 执行

​ 在创建对象时执行,由jvm默认调用

​ 在构造方法执行之前,执行

3. 静态代码块

3.1 语法、定义位置

static{......
}//类中,方法外

3.2 作用

​ 静态属性赋值,环境变量赋值,设置默认数据(用于执行只需要执行一次的代码)

3.3 执行特点

​ 不会根据对象创建次数而多次执行,只会执行一次;

​ 在类加载的过程中执行的,早于所以的对象相关内容;

final关键字

修饰范围:类、方法、变量

  1. 修饰类

    表示最终类,不能有子类,其中所以方法不能被重写

  2. 修饰方法

    方法无法被重写

  3. 修饰属性

    该属性的值无法被修改(常量)

面向对象——继承、代码块、final关键字相关推荐

  1. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  2. Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常

    day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...

  3. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  4. 面向对象编程(十二)——final关键字

    阅读目录 final关键字 final修饰变量 final修饰方法 final修饰类 Final && Static 总结 final关键字 Java关键字final有"这是 ...

  5. 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

    文章目录 I . 类继承基本方式 II . 使用 final 禁止类继承 / 方法重写 III . 父类没有主构造函数 IV . 父类有主构造函数 V . 父类构造函数与子类构造函数总结 I . 类继 ...

  6. Java面向对象(18)--final关键字使用

    在Java中声明类.变量和方法时,可使用关键字final来修饰,表示"最终的". final标记的类不能被继承,提高安全性,提高程序的可读性 如:String类.System类.S ...

  7. Java面向对象(四)final关键字

    一.final修饰变量 final修饰变量之后变量的直接值不能更改 ---- 常量. final定义的常量在对象创建完成之前允许改变一次值. java中 所说的常量往往是指静态常量 --- 只存储一份 ...

  8. static关键字与代码块

    文章目录 static关键字与代码块 一.static关键字 1.静态属性 2.静态方法 二.代码块 1.普通代码块 2.构造代码块 3.静态代码块 static关键字与代码块 一.static关键字 ...

  9. 编程开发之--java多线程学习总结(2)同步代码块

    1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize;/*** 1.使用同步代码块* 语法:synchronized ( ...

  10. 在方法参数上使用final关键字

    经过一些自己的混淆,最终博客方法的具体含义(最终声明的方法参数)将对此博客条目进行澄清. 至少可以将方法参数上的final关键字视为Java编译器的指示符,表明该参数不能重新分配给另一个引用. Jav ...

最新文章

  1. tomcat配置文件修改
  2. 分类与监督学习,朴素贝叶斯分类算法
  3. php fpm子进程数配置,php-fpm进程管理方式以及子进程数量配置原则详解
  4. UID 修改 UID 锁死修复
  5. CCF201409试题
  6. java合并表的两行_如何通过SQL将不同数据库表中记录两行合并为一行
  7. java的return用法
  8. 集成电路模拟版图入门-版图基础学习笔记(四)
  9. 二阶系统阶跃响应实验_二阶系统阶跃响应实验心得体会
  10. 李雅普诺夫指数 matlab,Matlab画Lorenz系统的最大李雅普诺夫指数图
  11. 使用 Python 进行数据清洗的完整指南
  12. 智能家居的新想法(2022)
  13. 多线程----使用线程池爬取二手房信息
  14. The client is closed
  15. 对于ACM竞赛算法分类的整理
  16. Composure视口的材质丢失?
  17. 2023年的深度学习入门指南(14) - 不能只关注模型代码
  18. word2010去掉回车符
  19. html5多屏互动游戏,2017TFC深度盘点:未来H5游戏的发展趋势 重度化强社交多屏互动...
  20. 中国人寿张青南:中国人寿如何基于容器构建PaaS平台

热门文章

  1. 2021面试题——jQuery面试题总结
  2. vue .env文件
  3. 手机摇一摇功能模块(抖音抖一抖,微信摇一摇)
  4. 许多学习vba excel脚本的简单例子
  5. 7款最新红包封面来了,定好闹钟领取!
  6. 男子一口气充了90年爱奇艺会员被刑拘,以后还敢薅羊毛吗?
  7. linux误删文件找回方法(xfs文件系统)
  8. springboot整合easyexcel 导入导出excel案例及文件无法打开
  9. 从零开始带你玩转单片机----------【第一期】
  10. 百度Hydra工具在移动端UI兼容性测试上的高效应用