java 面向对象基础 实例方法与类方法 this 包 访问权限 私有 共有 友好 保护

时间:2023-02-15 19:06:20

实例方法与类方法

声明方法时,方法类型前面不使用static修饰的是实例方法

使用static修饰的是类方法也称作静态方法。

 

this关键字

this关键字表示某个对象,this关键字可以出现在实例方法和构造方法中,但不可以出现在类方法中

当局部变量和成员变量的名字相同时成员变量就会被隐藏,这时如果想在成员方法中使用成员变量,则必须使用关键字this

语法格式为:

 this.成员变量名

 this.成员方法名()

   

Java要求文件名和类名相同,所以如果将多个类放在一起时,很可能出现文件名冲突的情况,这时Java提供了一种解决该问题的方法,那就是使用包将类进行分组

 

包(package)是Java提供的一种区别类的命名空间的机制,是类的组织方式,是一组相关类和接口的集合,它提供了访问权限和命名的管理机制。

Java中提供的包主要有以下3种用途

1)将功能相近的类放在同一个包中,可以方便查找与使用。

2)由于在不同包中可以存在同名类,所以使用包在一定程度上可以避免命名冲突。

3)在Java中,某此访问权限是以包为单位的。

 

创建包

创建包可以通过在类或接口的源文件中使用package语句实现,

package语句的语法格式如下:

package 包名;

包名:必选,用于指定包的名称,包的名称必须为合法的Java标识符。当包中还有子包时,可以使用“包1.2..n”进行指定,其中,包1为最外层的包,而包n则为最内层的包。

 

类可以访问其所在包中的所有类,还可以使用其他包中的所有public类。

 

类的两种访问方法

1)使用长名引用包中的类

使用长名引用包中的类比较简单,只需要在每个类名前面加上完整的包名即可。例如,创建Round类(保存在com.lzw包中)的对象并实例化该对象的代码如下:

com.lzw.Round round=new com.lzw.Round();

2)使用import语句引入包中的类

由于采用使用长名引用包中的类的方法比较繁琐,所以Java提供了import语句来引入包中的类。

import语句的基本语法格式如下:

import 包名1[.包名2.……].类名[ * ];

当存在多个包名时,各个包名之间使用.分隔,同时包名与类名之间也使用“.”分隔。

*:表示包中所有的类。

例如,引入com.lzw包中的Round类的代码如下:

import com.lzw.Round;

可以引入该包下的全部类:

import com.lzw.*;

 

访问权限

访问权限使用访问修饰符进行限制,访问修饰符有privateprotectedpublic,它们都是Java中的关键字。

访问权限是指对象是否能够通过“.”运算符操作自己的变量或通过“.”运算符调用类中的方法。

在编写类的时候,类中的实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问限制符没有关系。

 

使用private修饰的成员变量和方法称为私有变量和私有方法例如:

public class A {

 private int a;   // 变量a是私有的变量

 private int sum (int m,int n) {  // 方法sum是私有方法

   return m n;

}

}

假如现在有个B类,在B类中创建一个A类的对象后,该对象不能访问自己的私有变量和方法。例如:

public  class B {

 public static void main (String [] args) {

   A ca = new A ();

   ca.a = 18; // 编译错误,访问不到私有的变量a

 }

}

 

公有变量和公有方法

使用public修饰的变量和方法称为公有变量和公有方法。例如:

public class A {

 public int a;   // 变量a是公有的变量

 public int sum (int m,int n) {  // 方法sum是公有方法

   return m n;

}

}

使用public访问修饰符修饰的变量和方法在任何一个类中创建对象后都会访问到。例如:

public  class B {

 public static void main (String [] args) {

   A ca = new A ();

   ca.a = 18; // 可以访问,编译通过

}

}

 

友好变量和友好方法

不使用privatepublicprotected修饰符修饰的成员变量和方法被称为友好变量和友好方法,如:

public class A {

 int a;   // 变量a是友好的变量

 int sum (int m,int n) {  // 方法sum是友好方法

   return m n;

}

}

同一包中的两个类,如果在一个类中创建了另外一个类的对象后,该对象能访问自己的友好变量和友好方法。

public  class B {

 public static void main (String [] args) {

   A ca = new A ();

   ca.a = 18; // 可以访问,编译通过

}

}

 

受保护的成员变量和方法

protected访问修饰符修饰的成员变量和方法成为受保护的成员变量和受保护的方法,如:

public class A {

 protected int a;   // 变量a是受保护的变量

 protected int sum (int m,int n) {  // 方法sum是受保护的方法

   return m n;

}

}

同一个包中的两个类,一个类在另一个类创建对象后可以通过该对象访问自己的protected变量和protected方法。

public  class B {

 public static void main (String [] args) {

   A ca = new A ();

   ca.a = 18; // 可以访问,编译通过

}

}