(访问权限修饰符,构造方法,this关键字,封装)
访问权限修饰符
- public private (缺省) protected
- 他们都可以 用来修饰 属性和方法
- 对于类来说,只能使用 public 和 缺省
- 权限从大到小的排列:public protected 缺省 private
public String name;// 公开的,任何地方都可以访问
protected int age; //受保护的,同一包下的 或者是 子类 有访问权限
String hobby; // 缺省的,同一包下 有访问权限
private String password;//私有的,只能在 类内部访问
构造方法
构造方法: 就是专门创建对象的方法,当我们在new的时候,其实就是在调用构造方法。
*
-
如何定义一个构造方法:
-
(public) 构造方法名(参数){
}
-
注意:1.构造方法名要和 所在的类 的名字 完全一致,大小写也一致。
-
2.构造方法不能有返回值,void也不行
-
构造方法的作用:
-
1.定义无参的构造方法,客户以直接new 对象,创建对象。
-
2.可以定义有参的构造方法,进行实例化对象的时候 给成员变量进行 赋值。
-
注意的点:
-
1.java中,每个类都至少有一个构造方法。
-
2.如果类 定义的 没有 任何 显式的构造方法,那么 系统会自动的 提供一个 默认的无参构造方法。
-
3.如果在类中 定义了 显式的构造方法,那么系统将不再提供默认的无参构造方法。
-
构造方法是 支持 方法重载的。
private String name;//书的名字
private int page;//页码
public void read(){
System.err.println("正在读的书的名字为:"+name+";页码为:"+page);
}
public Book(){
System.err.println("这是构造方法.....");
}
/*public Book(String nm){
System.err.println("这是带有参数的构造方法.....");
name = nm;
}*/
public Book(String nm, int pa){
System.err.println("这是带有两个参数的 构造方法.....");
name = nm;
page = pa;
}
this关键字:
-
当局部变量和成员变量重名的时候。
-
怎样在方法里去调用 成员变量? 使用this关键字 this.成员变量
-
this关键字可以理解为 当前使用的对象或者是正在创建的对象。
-
this 可以修饰属性,还可以修饰方法,还可以修饰构造器。
public class Student {
private String name; //成员变量
public void reading(){
System.err.println("学生的名字为:"+name);
}
public String getName(){
return name;
}
public void setName(String name){//局部变量
//怎样在方法里去调用 成员变量? 使用this关键字 this.成员变量
this.name = name;
}
public Student(String name){//带有参数的构造方法
this.name = name;
}
}
封装
封装的意义:
- 问题:当创建了对象之后,如果我们通过 ‘对象.属性’ 的方式直接进行赋值,则可能出现与现实不符的情况
- 有些属性应该保护起来,不能被外部直接访问。
- 怎么做封装:
- 1把属性设置为私有的private
- 2声明public公开的方法,里面实现对该属性的操作 getXXX 和 setXXX
public class Animal {
private String name = "狗";//动物的名字 成员变量(也通常称为属性)
private int legs;//腿
public void speek(){
System.err.println("我的名字是:"+name+",我有"+legs+"条腿");
}
public String getName(){//getXXX方法,目的:获取动物的名字
return name;
}
public void setName(String nm){//setXXX方法,作用:给名字属性 进行赋值
name = nm;
}
public int getLegs(){
return legs;
}
public void setLegs(int leg){
if(leg>0 && leg%2==0){//腿的数目 要大于0,并且是偶数
legs = leg;
}else{
System.err.println("您输入的数目不合法!");
}
}
}