Java学习日记8——public、static、private、final、abstract、protected修饰符

Java学习日记8——public、static、private、final、abstract、protected修饰符

修饰符:分为访问修饰符和其他修饰符。可以修饰类也可以修饰类里面的字段和方法。
 1.访问修饰符的访问权限如下表:

修饰符同一个类中同一个包中不同包中的子类不同包中的非子类
private
默认
protected
public

 在定义类时,也可以用访问控制符,但是在类前面一般是public,要么就是默认不写。
 扩展应用,为了能够进行更好的封装和隐藏,通常会把类里面的字段(变量)设置为private,但是保留set和get两种方法对该字段进行获取和设置。如果要保存为只读字段,那么可以只是保留get方法就行,就可以不要set方法。例如:

public class person(){
	private int age ;
	public void setage(int age){
		if ( 0<age && age<=120 )
			this.age = age;
	}
	public int getage(){
		return age;
	}
}

 2.非访问控制符如下表:

修饰符基本含义修饰类修饰成员修饰局部变量
static静态的,非示例的,其实可以理解为全局的可以修饰内部类
final最终的,不可改变的
abstract抽象的,不可实例化的

static注意事项:
 1.被static修饰的变量,就是整个类的字段,不属于任何一个实例对象,不是保存在某个对象的内存空间中,而是保存在内存区域中。这样的字段可以通过类名直接访问,当然也可以通过某个示例对象访问。例如:

public class person(){
	static long totalperson;//这里的总人数就不属于某一个人的属性,而是整个人的个数集合,由于Java不能将变量写在类外面,所以这里相当于是全局变量
	...
}
person p = new person();

 这里的总人数就不属于某一个人的属性,而是整个人的个数集合,由于Java不能将变量写在类外面,所以这里相当于是全局变量。那么这里如果需要访问整个totalperson这个变量,那么可以使用person.totalperson或者p.totalperson进行访问,但是无论使用哪种访问方式,其实都是访问person类中的totalperson这个变量。
 2.被static修饰的方法:同上,也是直接属于类的方法,不能属于任何一个实例对象。所以是不能使用this和super,因为this和super就是针对于示例对象的,而static刚好相反。所以被static修饰的方法就不能再使用(this.方法)的形式调用。例如Math.random()方法就是直接属于类的方法,不属于某个实例对象。
 3.使用import static的引入:当一个类的所有成员都是static类型时,可以使用,那么可以做到简写。直接上例子:

import static java.lang.System.*;
//那么调用System中的方法时,就可以简写
//例如输出:
out.println();//表示System.out.println();

final使用注意事项:
 1.修饰类的时候,这个类将不能被继承,如果修饰方法,那么这个方法也将无法被继承而且无法被覆盖(重新定义)。相当于只读。
 2.修饰局部变量时:那么一旦这个值被给定,将无法再被修改,也就是说它是一个只读量。
  static final修饰的变量,那么可以理解为一个常量,而且是全局常量。虽然在Java中constant是保留字,但是却没有被实际使用,往往表示常量的方法都是用static final修饰。如果被修饰的字段没有给定初始值,那么会按照下列规则自动给定初始值:
 (1).数值类型为:0;
 (2).boolean(布尔)类型为:false;
 (3).引用类型为:null。
abstract使用注意事项
 抽象类的作用是将类更高层次的抽象,例如把汽车、轮船、火车类,抽象成一个更高层的类叫交通工具。
 1.被abstract修饰的类被称为抽象类,不能被实例化。也就是说这样的类不能被new成一个对象。
 2.被abstract修饰的方法叫做抽象方法,这样的方法的作用就是为所有子类定义一个统一的接口(后文讲),只需要声明即可,不需要实现具体内容。用(;)而不是用{}格式如下:

abstract function_abstract([paramlist]);

 3.抽象类中可以不包含抽象方法,但是包含抽象方法的类必须申明为abstract类;
 4.抽象方法在子类中必须要被实现(override覆盖),否则如果还是抽象方法,那么子类还是抽象类。

如果你对Java有兴趣,可以了解一下前面几期的基础知识!下面附上链接:

Java编程基础认知:Java学习日记1——基础认知
Java面向对象编程认识:Java学习日记2——面向对象编程认知
Java程序的基本结构认识:Java学习日记3——程序类型与构成认知
Java的输入输出方法总结:Java学习日记4——Java输入输出方法总结
Java的数据类型、变量、常量、运算符:Java学习日记5——数据类型、变量、常量、运算符、数组
Java学习日记6——类、字段、方法、this的使用:Java学习日记6——类、字段、方法、this的使用
Java学习日记7——类的继承、super使用规则:Java学习日记7——类的继承、super使用规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值