java高级修饰符.docx
- 文档编号:9463590
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:9
- 大小:63.43KB
java高级修饰符.docx
《java高级修饰符.docx》由会员分享,可在线阅读,更多相关《java高级修饰符.docx(9页珍藏版)》请在冰点文库上搜索。
java高级修饰符
1继承的概念
继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基,是提高软件系统的可扩展性与可维护性的主要途径。
所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
承的形式:
【访问权限修饰符】【修饰符】子类名extends父类名{子类体}
publicclassShape{
publicvoiddraw(){}
}
publicclassCircleextendsShape{
publicdoublegetDiameter(){
return0.0;
}
}
继承的作用:
代码复用
子类对象可以直接调用父类的属性和方法
publicclassShape{
publicvoiddraw(){}
}
publicclassCircleextendsShape{
publicdoublegetDiameter(){
return0.0;
}
}
//演示代码:
子类对象可以直接调用父类的方法,强调复用性
Circlecircle=newCircle();
circle.draw();
2高级类特性修饰符
一个类中主要包括属性、方法、构造方法,也可能还有块、内部类等。
在Java中,还可以使用一些修饰符实现类的一些高级特性,包括static、final、abstract、synchronized等,本节学习static、final的部分内容
可以通过以下修饰符实现类的一些高级特性
–static:
修饰属性、方法、块、内部类
–final:
修饰类、常量属性、方法、局部常量(部分在后续学习)
–abstract:
修饰类、方法
–synchronized:
修饰方法、同步代码块
3static的定义
static被称为静态,可以用来修饰类的属性或者方法。
如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性。
static属性可以使用对象调用,也可以直接用类名调用。
静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。
static属性
publicclassEmployee{
privateStringname;
privatedoublesalary;
privatestaticintcount;
publicEmployee(Stringname,doublesalary){
super();
this.name=name;
this.salary=salary;
count++;
}
publicstaticvoidmain(String[]args){
Employeee1=newEmployee("Alice",3000);
Employeee2=newEmployee("John",6000);
System.out.println(e1.name+""+e1.salary+""+e1.count);
System.out.println(e2.name+""+e2.salary+""+e2.count);
}
}
可见,输出的count都为2,说明两个对象调用的count是一个内存空间的值,而name和salary分别是各自初始化时赋的值。
可以理解实例变量和静态变量的区别。
静态的属性与对象没有关系,是所有对象共享的,只与类有关。
static方法定义
如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法。
基本结构如下:
static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用
publicclassTicketSeller{
privatestaticintticket=11;
publicstaticvoidsellticket(){
ticket=ticket-1;
System.out.println("卖票的静态方法");
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
TicketSeller.sellticket();
}
}
何时使用static方法
如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。
不需要创建对象后再使用该方法。
例如:
API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可。
总结
–static方法定义
–static方法的作用
–static方法的重要性
–本类的方法之间的调用
•任何方法都可以直接调用静态方法
•静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法
3static块
static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块。
区别在于语法不同
static语法
直接在代码块前,加上关键字static即成为静态块。
static{
System.out.println("123");
System.out.println("123");
System.out.println("123");
}
static用途
静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。
一个类中可以有多个静态块,按照顺序执行。
4final定义
static可以修饰属性、方法、块,final可以修饰类、属性、局部变量、方法。
但是修饰类和方法与继承有关
可见,static只能修饰属性,不能修饰方法的参数及局部变量,而final可以修饰属性,也可以修饰参数。
final用于声明属性,方法和类
–属性:
定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
–方法:
定义必须有实现代码,并且子类里不可被覆盖。
–类:
不能被定义为抽象类或是接口,不可被继承。
final修饰属性
–当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
–一些数学定理中的常量经常使用final修饰
π=3.14159265358979
E=2.718281828459045
修饰基本数据类型是主要用途!
E作为数学常数,是自然对数函数的底数。
有时称它为欧拉数(Euler'snumber)它是一个无限不循环小数.
这里提到的接口和抽象类以及继承为下章的知识点做铺垫。
如果下章不讲类的关系可以对基本概念做修改
!
!
final属性的赋值
final属性赋值
–在声明时同时赋值,往往与static一起使用
–声明时不赋值,必须在构造方法中逐一赋值
–总的原则:
保证创建每一个对象的时候,final属性的值是确定的
privateintindex;
privatestaticfinaldoublepai=3.14;
privatefinalintlevel;
publicTest(){
level=0;
}
publicTest(intindex){
this.index=index;
level=1;
}
final属性赋值
–在声明时同时赋值,往往与static一起使用
–声明时不赋值,必须在构造方法中逐一赋值
–总的原则:
保证创建每一个对象的时候,final属性的值是确定的
对参数做final修饰
在方法参数前面加final关键字,为了防止数据在方法体中被修改
publicclassEmployee{
privateStringname;
privatedoublesalary;
privatestaticintcount;
publicvoidwork(Stringleader){
Stringtaskname=null;
}
在类中声明的变量或常量叫属性,或者叫成员变量,如name、salary、count
在方法中声明的变量叫局部变量,或者临时变量。
属性可以使用四种权限修饰符修饰,局部变量不可以
属性可以使用static修饰,局部变量不可以
属性可以使用final修饰,局部变量也可以
属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收
局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收。
如果局部变量与属性重名,则遵守就近原则,可以使用this区分
属性可以在整个类中使用,局部变量只在当前方法中使用
属性都有默认的初始化值,如引用类型都是null,整型是0等,局部变量不被自动初始化,必须手工初始化,如taskname手工指定为null才为null,而属性name默认就为null
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 高级 修饰