黑马程序员技术交流社区

标题: 封装的知识点梳理 [打印本页]

作者: PDH    时间: 2015-9-18 00:36
标题: 封装的知识点梳理

public class Encapsulation {
/*
  * 封装的知识点整理
  * 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式
  * 知识点:
  * 1、属性private,提供公共方法来访问  get和set
  *    private不能修饰类,可以修饰类成员(成员变量和成员方法),只能本类中访问,私有是封装的一种表现形式
  * 2、构造函数,作用给对象进行初始化的,无返回值,伴随对象的建立而执行一次。
  *    2.1、构造代码块:给所有对象进行初始化的
  *        格式:{
  *        构造代码块内容;
  *       }
  *    2.2、构造函数:给一类对象进行初始化的
  *        格式:类名(){
  *         构造函数中的内容;
  *        }
  *      不同类型的构造函数以重载的方式表现
  *      所有类默认有一个空参数的构造函数  格式:类名(){},如果有了非空参数的构造函数,默认空参数的构造函数就不存在了。
  *      所有的访问修饰符都可以修饰构造函数
  *       public  公共
  *       protected 只有子类可以访问
  *       private 私有,一个类中所有构造函数为私有的,则在其他类中不能创建此类对象,可以应用于单类设计模式
  *       缺省修饰符    包内访问
  * 3、this关键字,代表当前对象
  *   应用:区分成员变量和局部变量
  *       同类不同构造函数间调用必须使用this关键字,而且this语句只能在构造函数的第一行
  * 4、static 静态
  *   被静态修饰表示全局
  *   调用格式:类名.静态成员  
  *   4.1、修饰成员变量表示此变量为全局变量,所有对象共有(共同操作)
  *   4.2、修饰成员方法表示此方法为全局方法,所有对象共有的,都可以使用
  *   静态存在在方法区中,随着类的加载而加载,优先于对象存在。
  * 5、静态代码块    用于给类初始化的,类加载则执行静态代码块,只执行一次,构造代码块和构造函数是对象建立执行一次。
  *     执行顺序是:静态代码块优先于构造代码块,构造代码块优先于构造函数。
  *   格式:static{
  *       静态代码块内容
  *      }
  *
  * 具体代码部分如下:
  */
public static void main(String[] args){
  Person p1=new Person();
  Person p2=new Person("lisi");
  Person p3=new Person(20,"zhangsan");
  
  System.out.println("p1:name="+p1.getName()+",age="+p1.getAge()+",country="+Person.country);
  System.out.println("p2:name="+p2.getName()+",age="+p2.getAge()+",country="+p2.country);
  System.out.println("p3:name="+p3.getName()+",age="+p3.getAge()+",country="+p3.country);
   
}
}
class Person{
private String name;
private int age;
static String country="ZN";
//静态代码块
static{
  System.out.println("静态代码块初始化类,类加载只执行一次");
//  method(); 静态代码块中不能调用非静态方法,静态了就可以调用了。因为有了静态的时候还没有非静态成员呢。
}
//构造代码块
{
  System.out.println("构造代码块初始化所有对象,对象建立只执行一次");
  method();
}

private void method(){   //这个方法加不加static 构造函数和构造代码块都可以调用,因为静态先于对象存在
  System.out.println("构造函数和构造代码块可以调用本类方法");
}
//构造函数
Person(){}   //因为我需要建立空参数的Person对象,所以这个我得自己加上,因为如果有其他的构造函数,此构造函数系统不会给我默认加上
Person(String name){
  this.name=name;
}
Person(int age,String name){
//  method();   this语句必须放在第一行
  this(name);
  this.age=age;
  method();
}

public String getName(){
  return name;
}
public void setName(String name){
  this.name=name;
}
public int getAge(){
  return age;
}
public void setAge(int age){
  this.age=age;
}
}


作者: 1406046710    时间: 2015-9-18 00:53
梳理的很全面啊

作者: PDH    时间: 2015-9-18 01:00
你好,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2