java中的【重载】【重写】【修饰符( private, default, protected, public ,static, final ,abstract)】

重载(Overloading):

 方法名称相同,参数的类型或个数不同。
 对权限没有要求
 发生在一个类中

重写(Overriding):

方法名称、参数类型、返回值类型全部相同。

  被重写的方法不能拥有比父类更加严格的权限。

  发生在继承中

java中的修饰符分类:

权限修饰符: private, default, protected, public
状态修饰符: static, final
抽象修饰符: abstract
		public class Cat {
			   // ...
		}
				private boolean myCat;
				
				static final double days = 9.5;
				
				protected static final int BOXWIDTH = 42;
				
				public static void main(String[] arguments) {
				
			   // 方法体
		}
权限修饰符:
  1. private:

    如果实体使用private修饰符声明,那么实体将只能由定义实体的类中的包含的代码访问。它的访问权限仅限于类的内部,是一种封装的体现。这样,就不能从类的外边直接访问他们,我们提供set和get方法,保证类中数据域的安全。

  2. default:

    默认修饰符,什么都不加,实际上它限制的范围就是一个包内可以访问。如果不在一个包内,即使继承关系任然是不能访问的。它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以

  3. protected:
    经常需要允许子类访问定义在父类中的数据和方法,但是不允许非子类访问这些数据和方法,这种情况下就可以使用protected,它允许任何包中的子类访问父类。

  4. public:

    具有最大的访问权限,可以访问任何一个CLASSPATH下的类,接口、异常等。它往往对于对外的情况,也就是对象或类对外的一种接口形式。

状态修饰符:(static, final)
  • static:
static修饰符
static的主要作用在于创建独立于具体对象的域变量或者方法。

语法格式:
修饰变量:static 数据类型 变量名

##修饰方法:【访问权限修饰符】 static 方法返回值 方法名(参数列表)

特点
static可以修饰变量,方法被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。

在类被加载的时候,就会去加载被static修饰的部分。被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

static静态变量
static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的
而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。

静态变量与非静态变量的区别
静态变量可以直接使用类名调用。

静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化。

静态变量一旦变化,所有的实例的静态变量值都会变化。

非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

非静态方法可以调用静态变量、静态方法和非静态变量、非静态方法。

static静态方法
被static修饰的方法也叫做静态方法,因为对于静态方法来说是不属于任何实例对象的
那么就是说在静态方法内部是不能使用this的。
由于这个特性,在静态方法中不能访问类的非静态变量和非静态方法,
因为非静态方法/变量都是须依赖具体的对象才能够被调用。
在静态方法中不能访问非静态方法和非静态变量,
但是在非静态方法中是可以访问静态方法/静态变量。



  • final修饰符
final 修饰符
final 关键字可以用于修饰类,方法和变量

1、final关键字通常与static修饰符一起使用来创建类常量
2、 final 修饰成员变量
	必须要赋初始值,而且是只能初始化一次。
	被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
	
	如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
	如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,
	但是这个引用所指向的对象里面的内容还是可以改变的。
	
3、final 关键字修饰方法时,则该方法不能被重写
	一个类的private方法会隐式的被指定为final方法。
	如果父类中有final修饰的方法,那么子类不能去重写。
4、final 关键字修饰类时,该类不能被继承
	被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。
	final类中的成员方法都会被隐式的指定为final方法。

抽象修饰符:abstract:


用abstract关键字来修饰该类[抽象类],用abstract来修饰该方法[抽象方法]。

抽象类:
抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。
定义成抽象类的目的,就是为了在子类中实现抽象类。

抽象类不能被实例化。因为抽象类中方法未具体化,除此之外,类的其它功能依然存在,
成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。

抽象类中不一定要包含abstract方法。也就是抽象中可以没有abstract方法。

抽象方法:
	用abstract来修饰该的抽象方法只包含一个方法名,不能有方法主体。
	抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
	一旦类中包含了abstract方法,那类该类必须声明为abstract类。

发布了50 篇原创文章 · 获赞 13 · 访问量 2417

猜你喜欢

转载自blog.csdn.net/endless_Y/article/details/104470120