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

一、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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值