目录
4.类的访问修饰符(package-private/package-access)
父类和子类拥有相同名字的属性或者方法(方法隐藏只有一种形式,就是父类和子类
一、this关键字
this关键字代表当前对象(谁在调用,this就是谁),通常用于区分成员变量和方法中的局部变量。
1.使用方式:
(1)引用当前对象的成员变量
在类的成员方法中,如果存在于成员变量同名的局部变量,则可以使用this关键字来引用当前对象的成员变量
public class person{ private String name; private int age; //成员变量私有,使用setget public void setName(String name){ this.name = name; } public void setAge(int age){ this.age = age; } }
(2)调用当前对象的成员方法
在类的成员方法中,可以使用this关键字来调用当前对象的其他成员方法。例如:
public class Person{ public void sayHello(){ System.out.pringtln("Hello"); } public void sayHi(){ this.sayHello(); } }
(3)调用当前对象的构造方法
在类的构造方法中,可以使用this关键字来调用当前类的其他构造方法,例如:
public class Person{ private String name; private int age; //无参构造 public Person(){Person()构造方法中,this("Tom",20)是调用了另外一个Person构造 this("Tom",20); } //有参构造 public Persion(String name,int age){ this.name = name; this.age = age; } }
注意:
-
this调用实例变量,调用实例方法,静态成员(不推荐),只能在实例成员中/实例初始化、构造方法中实现。
-
使用this调用其他的构造方法 this ([实参列表]) 调用重载的构造,只能是构造的第一个语句
-
this关键字代表当前对象
二、包
包是类的容器,利用包来划分名字空间,用于分隔类名空间,以避免类名冲突。
1.包的定义
(1)语法格式:package 包名
(2)包不能以 java、javax开头
(3)包名通常是全部小写的ASCII字母,并且是一个顶级域名com/deu/gov/net及org,通常使用域名的倒序,
如 adam.com 可以声明为 com.adam.projectname.mypackage
(4)定义包后,Java会在硬盘上生成与包意一一对应的目录。
2.包的作用
存放类 区分类,防止命名冲突 包允许在更广的范围内保护类、数据和方法
3.包的使用
声明包的含义是声明当前类所在的包 导入包的含义是声明当前类要使用到的其他类所在的包 使用非同包下的类需要先导包或者使用全限定类名 子包下的类需要导包 同包、java.lang包下的类不需要导包
三、访问修饰符
[访问修饰符] class 类名 extends 父类名{ }
1.public
被public修饰的成员变量和成员方法可以在所有类中访问。
2.protected
受保护的,同包下任意类都可以访问【其他包子类也可以访问 static 】
3.private
被private修饰的成员变量和成员方法只能在声明他们中的类里访问,不能在其他类访问。
// package-access : 同包下任意类可以访问
4.类的访问修饰符(package-private/package-access)
修饰符 /作用域 | 同一包中 | 不同包中 |
---|---|---|
public | 可以使用 | 可以使用 |
package-access | 可以使用 | 不可以使用 |
5.类成员的访问修饰符
位置 | public | protected | 包访问修饰符 | private |
---|---|---|---|---|
同类访问 | √ | √ | √ | √ |
同包其他类访问 | √ | √ | √ | × |
同包子类访问 | √ | √ | √ | × |
不同包子类访问 | √ | √ | × | × |
不同包非子类访问 | √ | ×</ |