一、static:静态的

成员变量包括:实例变量(无static修饰,属于对象,储存在堆中,有几个对象就有几份,通过对象点来访问)and 静态变量(有static修饰,属于类,存储在方法区中,只有一份,通过类名点来访问);


1. 静态变量
1.1 由static修饰
1.2 属于类,储存在方法区,只有一份
1.3 常常通过类名点进行访问
1.4 何时使用:所有对象所共享的数据(图片、音频、视频等)

2. 静态方法
2.1 由static修饰
2.2 属于类,储存在方法区,只有一份
2.3 常常通过类名点进行访问
2.4 静态方法中无隐式的this.传递,故静态方法无法直接访问实例变量
2.5 何时使用:方法的操纵与对象无关时(极少)

double b=Math.sqrt(25);//静态方法
//假设sqrt不是静态的
Math m1=new Math();
double d=m1.sqrt(25);//5
Math m2=new Math();
double d=m1.sqrt(25);//5
Math m3=new Math();
double d=m1.sqrt(25);//5
//无论m1、m2、m3、、、m100中哪一个对象,去sqrt(25),最终结果都是5,说明sqrt()的操纵与对象无关

** 3. 静态块**
3.1 由static修饰 { }——_(static{ }为静态块)
3.2 在类被加载期间,自动执行,因为类只被加载一次,故静态块只执行一次
3.3 何时使用:初始化/加载静态资源(图片、音频、视频等),

二、static final 常量:应用率高

  1. 必须声明时同时初始化
  2. 通过类名点进行访问,不能被改变
  3. 建议:常量名所有字母全都大写,多单词之间使用下划线_进行分隔
  4. 编译期在编译时会将常量直接替换为具体的值(效率高)
  5. 何时使用:数据永远不变、经常使用
package oop_day06;
//static final demo
public class StaticFinalDemo {public static void main(String[] args) {System.out.println(Doo.PI);//常量通过类名进行访问//Doo.PI=3.1415926;//编译错误,常量不允许修改System.out.println(Eoo.num);//加载Eoo.class到方法区;静态变量num一并储存在方法区//到方法区中获取num并输出System.out.println(Eoo.COUNT);//编译期在编译时会自动将常量替换为具体的值,效率高//相当于System.out.print("5");}
class Doo{public static final double PI=3.14159;//public static final int NUM;//编译错误,常量必须声明同时初始化
}
class Eoo{public static int num=5;//静态变量public static final int COUNT=5;//常量
}
}

三、抽象方法:

  1. 前加abstract修饰,
  2. 只有方法的定义,无具体实现其后**{方法体}**统统不用写

四、抽象类:

  1. 类前要加abstract修饰
  2. 包含抽象方法的类必须是抽象类
  3. 抽象类不能被实例化(不可以new对象,但类是个数据类型,只要是数据类型就可以声明引用或者声明数组)
  4. 抽象类是需要被继承的,派生类:
    4.1 重写所有的抽象方法————变不完整为完整(当使用向上造型时,可以通过超类的引用点出来,但调用出的方法为重写的方法)
    4.2 也声明抽象类————不常用
  5. 抽象类的意义
    5.1 封装派生类所共有的属性和行为————代码复用
    5.2 为所有派生类提供统一的类型————向上造型
    5.3 可以包含抽象方法,其本身无意义,但可以为所有派生类提供统一的入口,派生类的具体实现不同,但入口一致

设计规则:
7. 将派生类所共有的属性和行为,抽到超类中————抽共性
8. 如果所有派生类的行为都一样,设计为普通方法;
如果所有派生类的行为都不一样,设计为抽象方法;
9.

Java学习day_012(OOP):抽象类、接口和内部类(上)相关推荐

  1. Java学习系列之抽象类和接口的区别和联系

    导读 本文首先分别介绍抽象类和接口的基础概念.特征和应用场景,然后介绍其区别和联系. 1 抽象类 1.1 定义抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修 ...

  2. java基础_static关键字,接口,内部类,匿名内部类

    关键字static 当我们编写一个类时,其实就是在描述其对象的属性和行为,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时候希望无论是否产生了对象或 ...

  3. JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用

    本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...

  4. 2022年Java学习路线图,精心整理「史上最全」

    前言: 很多老铁经常问我:哪些是适合Java零基础学习的视频?应该先学哪个后学哪个?等等问题. 那么,怎么解决这些疑问? 一个系统的Java学习路线正是你最需要的,这也是为什么很多前期自学的小白们到处 ...

  5. JAVA学习笔记之抽象类与接口2020-3-22

    抽象类 先了解一下抽象类的概念. 一个完整的方法,是有: 1.方法声明 2.方法体 public void show(){方法体; } 而如果只包含方法声明,没有方法体,那么就称之为:抽象方法.(ab ...

  6. 【Java 学习笔记】 抽象类和接口

    抽象类:类的设计应当保证父类包含子类的共同特征,有时为了方便会将父类设计的特别抽象以至于没有具体实例,称之为抽象类. -多重继承:需要从多个类中派生出一个子类,这种能力叫做多重继承. -单重继承:每个 ...

  7. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类

    一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...

  8. Java学习_day013(OOP):内部类

    成员内部类:应用率低.了解, 类中套类,外面的称为Outer外部类,里面的称为Inner内部类: 内部类通常只服务于外部类,对外不具备可见性 内部类对象通常是在外部类中创建的 内部类中可以直接访问外部 ...

  9. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda

    包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...

最新文章

  1. 前缀、中缀、后缀表达式及其相互转化的Java实现
  2. Oracle 移植 失败,Oracle迁移导致sqlplus报告ora-15180错误信息
  3. 实战解读增长黑客在 B 端业务中的应用
  4. 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
  5. 新的log4j2.xml
  6. IOT(32)---各大物联网平台对比
  7. 美团酒旅数据治理实践
  8. imageio读取数据后需要关闭吗_关闭汽车自动启停功能后,能更换为普通汽车电瓶吗?有什么影响吗...
  9. 微软office即点即用服务能关闭吗?_电脑预装的正版office激活前就被卸载了怎么找回?...
  10. 腾讯自己与自己的战争
  11. Spring 的 BeanPostProcessor接口实现
  12. 用计算机画函数图象的软件,自动画出函数图象的软件 真像函数图像绘制器
  13. 将multisim中波形在matlab中输出
  14. linux find查找时间段文件,查找某个时间段的文件和find命令
  15. JavaScript 注册登录页面的简单实现
  16. 官宣 .NET 6 RC (Release Candidate) 2
  17. 从电商到软件市场,阿里双十一战火蔓延
  18. win10配置更新怎么关闭计算机,如何关闭win10系统自动更新功能?教你彻底关闭win10自动更新方法...
  19. 浅谈辅助功能 AccessibilityService
  20. php 菜单模块,POSCMS模块菜单

热门文章

  1. 代码审查就是在排大便——你懂的!
  2. 解决页面换行因标点符号不能出现在每一行的开头,导致提前换行,中间出现空隙的问题
  3. SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
  4. 【玩转server 2019系列】Windows server 2019打开windows defender提示“需要新应用打开windows defender”的解决方法
  5. 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  6. 禁用引导模态区域之外的单击以关闭模态
  7. “参数”vs“参数”[重复]
  8. 什么是Python 3相当于“python -m SimpleHTTPServer”
  9. jQuery中的队列是什么?
  10. JavaScript对象中的构造方法