1. 方法的重写(override/overriding):重新写、覆盖

    • 发生在父子类中,方法名相同,参数列表相同
    • 重写方法被调用时,看对象的类型------------这是规定,记住就OK

    当派生类觉得超类的行为不够好时,可以重写

点击查看代码
  1. 我继承了一个中餐馆
  2. class Aoo{
  3. void do(){
  4. 做中餐
  5. }
  6. }
  7. A:我还是想做中餐------------不需要重写
  8. class Boo extends Aoo{
  9. }
  10. B:我想改做西餐--------------需要重写
  11. class Boo extends Aoo{
  12. void do(){
  13. 做西餐
  14. }
  15. }
  16. C:我想在中餐基础之上加西餐-----需要重写(先super中餐,再加入西餐)
  17. class Boo extends Aoo{
  18. void do(){
  19. super.do();
  20. 做西餐
  21. }
  22. }
  1. 重写与重载的区别:重点(常见的面试题)

    • 重写:发生在父子类中,方法名相同,参数列表相同

      一般用于在派生类中修改超类的方法

    • 重载:发生在同一类中,方法名相同,参数列表不同

      是完全不同的方法,只是方法名相同而已

  2. package和import:

    • package:声明包

      • 作用:避免类的命名冲突
      • 同包中的类不能同名,不同包中的类可以同名
      • 类的全称:包名.类名,包名常常有层次结构
      • 建议:包名所有字母都小写

      说明:package声明包必须位于第一行

    • import:导入类

      • 同包中的类可以直接访问,不同包的类不能直接访问,若想访问:

        • 先import导入类,再访问类----------建议
        • 类的全称-----------------------------------太繁琐,不建议

      说明:import导入类必须位于声明包的下一行

  3. 访问控制修饰符:

    封装的意义:隐藏一些东西,暴露一些东西,来保护数据的安全

    • public:公开的,任何类
    • private:私有的,本类
    • protected:受保护的,本类、派生类、同包类
    • 默认的:什么也不写,本类、同包类
    1. 类的访问权限只能是public或默认的
    1. 类中成员的访问权限如上四种都可以
点击查看代码
  1. //封装的意义
  2. class Card{
  3. private String cardId;
  4. private String cardPwd;
  5. private double balance;
  6. public boolean payMoney(double money){ //支付金额
  7. if(balance>=money){
  8. balance-=money;
  9. return true;
  10. }else{
  11. return false;
  12. }
  13. }
  14. public boolean checkPwd(String pwd){ //检测密码
  15. if(pwdcardPwd相同){
  16. return true;
  17. }else{
  18. return false;
  19. }
  20. }
  21. }
  1. //访问权限范围:
  2. package ooday04;
  3. //演示访问控制修饰符
  4. public class Aoo {
  5. public int a; //任何类
  6. protected int b; //本类、派生类、同包类
  7. int c; //本类、同包类
  8. private int d; //本类
  9. void show(){
  10. a = 1;
  11. b = 2;
  12. c = 3;
  13. d = 4;
  14. }
  15. }
  16. class Boo{ //---------------演示private
  17. void show(){
  18. Aoo o = new Aoo();
  19. o.a = 1;
  20. o.b = 2;
  21. o.c = 3;
  22. //o.d = 4; //编译错误
  23. }
  24. }
  25. package ooday04_vis;
  26. import ooday04.Aoo;
  27. public class Coo { //演示同包的概念
  28. void show(){
  29. Aoo o = new Aoo();
  30. o.a = 1;
  31. //o.b = 2; //编译错误
  32. //o.c = 3; //编译错误
  33. //o.d = 4; //编译错误
  34. }
  35. }
  36. class Doo extends Aoo{ //演示protected
  37. void show(){
  38. a = 1;
  39. b = 2;
  40. //c = 3; //编译错误
  41. //d = 4; //编译错误
  42. }
  43. }
  1. static:静态的

    • 静态变量:

      • 由static修饰
      • 属于类,存储在方法区中,只有一份
      • 常常通过类名点来访问
      • 何时用:所有对象所共享的数据(图片、音频、视频等)
点击查看代码
  1. public class StaticDemo {
  2. public static void main(String[] args) {
  3. Eoo o1 = new Eoo();
  4. o1.show();
  5. Eoo o2 = new Eoo();
  6. o2.show();
  7. Eoo o3 = new Eoo();
  8. o3.show();
  9. System.out.println(Eoo.b); //常常通过类名点来访问
  10. }
  11. }
  12. class Eoo{ //演示静态变量
  13. int a;
  14. static int b;
  15. Eoo(){
  16. a++;
  17. b++;
  18. }
  19. void show(){
  20. System.out.println("a="+a+",b="+b);
  21. }
  22. }
  • 静态方法:

    • 由static修饰
    • 属于类,存储在方法区中,只有一份
    • 常常通过类名点来访问
    • 静态方法没有隐式this传递,所以不能直接访问实例成员
    • 何时用:方法的操作与对象无关
点击查看代码
  1. //static的演示
  2. public class StaticDemo {
  3. public static void main(String[] args) {
  4. Goo.plus(4,6);
  5. }
  6. }
  7. //演示静态方法
  8. class Foo{
  9. int a; //实例变量(由对象来访问)
  10. static int b; //静态变量(由类名来访问)
  11. void show(){ //有隐式this
  12. System.out.println(this.a);
  13. System.out.println(Foo.b);
  14. }
  15. static void test(){
  16. //静态方法中没有隐式this传递
  17. //没有this就意味着没有对象
  18. //而实例变量a是必须由对象来访问的
  19. //所以下面的语句发生编译错误
  20. //System.out.println(a); //编译错误
  21. System.out.println(Eoo.b);
  22. }
  23. }
  24. //演示静态方法何时用
  25. class Goo{
  26. int a; //对象的属性
  27. //方法中用到了对象的属性a,意味着show()的操作与对象是有关的,不能做成静态方法
  28. void show(){
  29. System.out.println(a);
  30. }
  31. //方法中没有用到对象的属性和行为,意味着plus()的操作与对象是无关的,可以做成静态方法
  32. static void plus(int num1,int num2){
  33. int num = num1+num2;
  34. System.out.println(num);
  35. }
  36. }
  • 静态块:

    • 由static修饰
    • 属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块也只执行一次
    • 何时用:初始化/加载静态资源(图片、音频、视频等)
点击查看代码
  1. public class StaticDemo {
  2. public static void main(String[] args) {
  3. Hoo o4 = new Hoo();
  4. Hoo o5 = new Hoo();
  5. Hoo o6 = new Hoo();
  6. }
  7. }
  8. //演示静态块
  9. class Hoo{
  10. static {
  11. System.out.println("静态块");
  12. }
  13. Hoo(){
  14. System.out.println("构造方法");
  15. }
  16. }
  17. ```
  18. </details>
  19. ## 精华笔记
  20. 1. 方法的重写(override/overriding):重新写、覆盖
  21. - 发生在父子类中,方法名相同,参数列表相同
  22. - 重写方法被调用时,看对象的类型------------这是规定,记住就OK
  23. >当派生类觉得超类的行为不够好时,可以重写
  24. 2. 重写与重载的区别:重点(常见的面试题)
  25. - 重写:发生在父子类中,方法名相同,参数列表相同
  26. > 一般用于在派生类中修改超类的方法
  27. - 重载:发生在同一类中,方法名相同,参数列表不同
  28. > 是完全不同的方法,只是方法名相同而已
  29. 3. package和import:
  30. - package:声明包
  31. - 作用:避免类的命名冲突
  32. - 同包中的类不能同名,不同包中的类可以同名
  33. - 类的全称:包名.类名,包名常常有层次结构
  34. - 建议:包名所有字母都小写
  35. > 说明:package声明包必须位于第一行
  36. - import:导入类
  37. - 同包中的类可以直接访问,不同包的类不能直接访问,若想访问:
  38. - 先import导入类,再访问类----------建议
  39. - 类的全称-----------------------------------太繁琐,不建议
  40. > 说明:import导入类必须位于声明包的下一行
  41. 4. 访问控制修饰符:
  42. > 封装的意义:隐藏一些东西,暴露一些东西,来保护数据的安全
  43. - public:公开的,任何类
  44. - private:私有的,本类
  45. - protected:受保护的,本类、派生类、同包类
  46. - 默认的:什么也不写,本类、同包类
  47. > 1. 类的访问权限只能是public或默认的
  48. >
  49. > 2) 类中成员的访问权限如上四种都可以
  50. 5. static:静态的
  51. - 静态变量:
  52. - 由static修饰
  53. - 属于类,存储在方法区中,只有一份
  54. - 常常通过类名点来访问
  55. - 何时用:所有对象所共享的数据(图片、音频、视频等)
  56. - 静态方法:
  57. - 由static修饰
  58. - 属于类,存储在方法区中,只有一份
  59. - 常常通过类名点来访问
  60. - 静态方法没有隐式this传递,所以不能直接访问实例成员
  61. - 何时用:方法的操作与对象无关
  62. - 静态块:
  63. - 由static修饰
  64. - 属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块也只执行一次
  65. - 何时用:初始化/加载静态资源(图片、音频、视频等)
  66. 补充:
  67. 1. 成员变量分两种:
  68. - 实例变量:没有static修饰,属于对象的,存储在堆中,
  69. ​ 有几个对象就有几份,通过引用打点来访问
  70. - 静态变量:有static修饰,属于类的,存储在方法区中,
  71. ​ 只有一份,通过类名打点来访问
  72. 2. 内存管理:由JVM来管理的
  73. - 堆:new出来的对象(包括成员变量)
  74. - 栈:局部变量(包括方法的参数)
  75. - 方法区:.class字节码文件(包括静态变量、所有方法)
  76. 3. 在构造方法中给实例变量做初始化
  77. 在静态块中给静态变量做初始化

ooday04 Java_面向对象_重写_static的更多相关文章

  1. Java之旅_面向对象_重写和重载

    参考并摘自:http://www.runoob.com/java/java-override-overload.html 重写(Override) 子类对父类(允许访问的)方法的实现过程进行重新编写, ...

  2. 黑马程序员_Java面向对象_内部类

    6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...

  3. 【Java基础】【08面向对象_继承&方法&final】

    08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...

  4. Java_面向对象

    目录 一.封装 二.继承 三.多态 四.重载与重写 五.接口与抽象类 六.继承与组合 七.初始化块 面向对象的三大特征:封装.继承.多态. 一.封装 是指将对象的状态信息都隐藏在对象内部,不允许外部程 ...

  5. 【Java基础】【09面向对象_多态&抽象类&接口】

    09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...

  6. Python_面向对象_类2

    类的几个装饰器方法: @classmethod (类方法):使之无法访问实例变量 class Animal(object): def __init__(self, name): self.name = ...

  7. Python_面向对象_类1

    面向对象:减少重复代码,提高效率,比函数式编程更高效 类的创建: 实例属性又称:成员变量,成员属性(或者字段) 面向对象的三大特性: 一.封装 把客观事物封装为抽象的类,并对外只暴露一个可用接口 使用 ...

  8. Java之旅_面向对象_抽象类

    参考并摘自:http://www.runoob.com/java/java-abstraction.html Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有 ...

  9. 13_Java面向对象_第13天(static、final、匿名对象、内部类、包、修饰符、代码块)_讲义

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 01final关键字概念 A: 概述 继承的出现提高了代码的复 ...

随机推荐

  1. 基于Koa与umi实现服务端(SSR)渲染

    工具: umijs:react前端应用框架. koa:基于 Node.js 平台的web 开发框架. 介绍: 本文主要是简单介绍,利用umi开发前端页面,打包成服务端渲染工程包.由Koa实现服务端渲染 ...

  2. Java Web实现用户登录功能

    java web 学习记录一下 mvc结构实现mysql 连接 什么是mvc MVC是模型(model).视图(view).控制(controller)这三个单词上的首字母组成.它是一种应用模型,它的 ...

  3. Abp集成HangFire

    简要说明 后台作业在系统开发的过程当中,是比较常用的功能.因为总是有一些长耗时的任务,而这些任务我们不是立即响应的,例如 Excel 文档导入.批量发送短信通知等. ABP vNext 提供了后台作业 ...

  4. Linux操作系统,为什么需要内核空间和用户空间?

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 本文以 32 位系统为例介绍内核空间(kernel sp ...

  5. 做SaaS的程序员们,是时候关注企业架构了

    SaaS赛道是一个超大赛道,足够容纳上万家服务商,不太可能有哪个服务商能满足所有场景,大部分SaaS服务商在某个垂直领域,提供差异化的产品和服务.SaaS产品大部分都是面向B端客户,少部分面向C端客户 ...

  6. CentOS配置epel源

    https://opsx.alibaba.com/mirror epel 配置方法 1.备份(如有配置其他epel源) mv /etc/yum.repos.d/epel.repo /etc/yum.r ...

  7. Java线程同步操作

    synchronized 作用于对象实例:对给定对象加锁,进入同步代码前要获得给定对象的锁. 作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁. 作用于静态方法:相当于对当前类加 ...

  8. 142_Power BI之同比预测

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来. [video widt ...

  9. 简历应该怎么写,HR看一篇简历仅需要5秒吗,简历模板大全

    哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 最近有很多小伙伴问奇哥,说奇哥 ...

  10. spring boot 在控制台打印banner

    转自 SpringBoot系列--花里胡哨的banner.txt - huanzi-qch - 博客园 (cnblogs.com) <div id="cnblogs_post_body ...