Java语言基础(七)

来源:互联网 发布:如何修改mac锁屏界面 编辑:程序博客网 时间:2024/05/24 04:27


Java语言基础(七)


A.封装概述:是指隐藏对象的属性和实现的细节,只对外提供公共的访问方式;
 好处:隐藏实现的细节,提供公共的访问方式
      提供代码的复用性
      提高安全性
B.封装原则:
  1).将对外不需要提供的内容都隐藏起来;
  2).将属性隐藏,对外提供公共的方法;
 private关键字:
 是一个权限修饰符;
 可以修饰成员(成员变量和成员方法)
 被private修饰的成员只能在本类中被访问;
C. private常用的案例:
 一个成员变量用private修饰;
 对其提供setXxx()方法和getXxx()方法对其访问;
 一个标准的案例使用过程;
 例如:学生类
      姓名
      学号
      年龄
      班级


代码:
**************************************************************************************************************************************************************
class StudentNew{
 //封装学生类的属性
  private String Name;
  private int Number;
  private int Age;
  private String Grade;
  //得到学生的姓名
  public void seName(String Name){
   this.Name=Name; 
  }
  //得到学生的学号
  public void setNumber(int Number){
   this.Number=Number;
  }
  //得到学生的年龄
  public void setAge(int Age){
   this.Age=Age;
  }
  //得到学生类的班级
  public void setClass(String Grade){
   this.Grade=Grade;
  }
  //返回学生的姓名
  public String getName(){
   return Name;
  }
  //返回学生的学号
  public int getNumber(){
   return Number;
  }
  //返回学生的年龄
  public int getAge(){
   return Age;
  }
  //返回学生的班级
  public  String getGrade(){
   return Grade;
  }
//上述代码也可用Alt+shift+s快捷实现增加代码的xiaolv,也可以点source实现;
  
}
public class StudentNewDemo {
  public static void main(String[] args){
   //定义一个学生类对象
   StudentNew stu=new StudentNew();
   stu.seName("高圆圆");
   stu.setNumber(7);
   stu.setAge(18);
   stu.setClass("初三一班");
   //输出这个学生类对象
   System.out.println("姓名:"+stu.getName()+"\t"+"学号:"+stu.getNumber()+"\t"+"年龄:"+stu.getAge()+"\t"+"班级:"+stu.getGrade());
   
   
   //定义第二个学生类对象
   StudentNew stu1=new StudentNew();
   stu1.seName("赵又廷");
   stu1.setNumber(8);
   stu1.setAge(19);
   stu1.setClass("初三二班");
   //输出这个学生类对象
   System.out.println("姓名:"+stu1.getName()+"\t"+"学号:"+stu1.getNumber()+"\t"+"年龄:"+stu1.getAge()+"\t"+"班级:"+stu1.getGrade());
   
   
  }
}
************************************************************************************************************************************************************

输出结果:

姓名:高圆圆 学号:7 年龄:18 班级:初三一班
姓名:赵又廷 学号:8 年龄:19 班级:初三二班

*************************************************************************************************************************************************************

D.this关键字:
代表:所在类的对象引用(方法被哪个对象引用,this就代表哪个对象)
什么时候用:
局部变量隐藏成员变量

例如

class Person{
     private int age;
        public void setAge(int age){
  //把局部变量赋值给成员变量这个this.age指的就是类中的age,如果没有this就近原则指的就是局部变量的赋值
  this.age=age
 }
}


E.构造方法
构造方法的作用:给对象的数据进行初始化;
构造方法的格式:方法名与类名相同;
  没有返回值类型,连void都没有;
  没有具体的返回值;

构造方法的注意事项:如果你不定义构造方法,系统会默认一个构造方法;
     如果你提供了一个构造方法,系统将不再提供构造方法;
     构造方法可以重载;
成员方法
其实就是我们前面讲过的方法
方法具体划分:
根据返回值:
        
     有明确返回值方法
                                        
        返回void类型的方法

                          根据形式参数
 
        无参方法

        带参方法
F.一个类的基本格式:
 类
 成员变量
 构造方法:无参构造;
  有参构造;
 成员方法
  setXxx();
  getXxx();
 给成员变量赋值方式:
  无参构造方法:setXxx();
  带参构造方法

标准类案例:
 用getXxx()比较麻烦,增加show(),如果不单独获取数据可以不用getXxx();


class Person{
 private String Name;
 private String Country;
 private String Gender;
 //使用带参构造初始化
 public Person(String Name,String Country,String Gender){
  this.Name=Name;
  this.Country=Country;
  this.Gender=Gender;
 }
 public void showPerson(){
  System.out.println("姓名:"+Name+"\n"+"国籍:"+Country+"\n"+"性别:"+Gender);
 }

}
public class PersonDemo {
 public static void main(String[] args){
  Person p=new Person("高圆圆","中国","女");
  p.showPerson();
 }

}
***********************************************************************************************
输出结果:
姓名:高圆圆
国籍:中国
性别:女


G.类的初始化过程:
  Person p=new Person();在内存中做了几件事情?
 6件事情:
1)给Person p在栈内存中分配空间;
2)给 new Person()在对内存中分配空间;
3)通过加载Person类加载成员变量,默认初始化值;
4)显示初始化:通过构造方法进行数据初始化;
5)通过创建对象进行赋值操作;
6)给堆内存标记一个内存空间的地址值:Person p里面的地址间接指向;