<JAVA - 面向对象(二)>

 01、this

02、static

package This_Demo01;
/**
 *         学生类模板:
 *         JAVA中的关键字:
 *                 this:
 *                     调用属性:
 *                         this.属性名:
 *                             当局部变量与成员变量名称相同时,使用this关键字代表成员变量
 *                             如果局部变量和成员变量名称不同,this可以省略 
 *                     调用方法:
 *                         this.方法();
 *                             本类中可以省略this
 *                     调用构造函数:
 *                          this();     // 调用无参构造
 *                          this("小子",2);  // 调用有参构造
 *                             this语句必须要在构造函数第一句
 * 
 *         static可以修饰:
 *             【1】属性         ->静态变量   / 类变量        --定义在类中
 *             【2】方法         ->静态方法  / 类方法        --定义在类中
 *             【3】代码块         ->静态代码块
 *             【4】内部类         ->静态内部类
 *     
 *         static  修饰属性 ,方法等,在类加载的时候就被一同加载到内存中来的
 *                 使用方法:
 *                     类名.属性名/方法名()
 *                     对象名.属性名/方法名()
 *     注意:
 *         static方法只能使用或调用static修饰的变量或调用static方法
 *             不可以使用非static修饰的属性(成员属性)
 *             而static  的方法在类的加载时产生,存在共享区中
 *             在静态方法加载到内存中式还没有对象的产生,所以不能使用
 *             非静态方法不仅可以调用非静态的属性和方法还可以调用静态的方法和属性
 *                 因为后产生的可以调用先产生的。
 *     
 * @author 韦桂金
 *
 */
public class Student {
    // 编写属性
    private int idNum;     // 学号
    private String name;   // 姓名
    private char gender;   // 性别
    //private String city;   // 所在地
    public static String city;   // 所在地     --
    
    // 无参构造
    public Student() {}
    
    // 有参构造
    public Student(int idNum,String name,char gender,String city) {
        this("镇江",'男');
        //this();     //调用无参
        this.idNum = idNum;
        this.name = name;
        this.gender = gender;
        this.city = city;
    }
    public Student(String name,char gender) {
        this.name = name;
        this.gender = gender;
    }
    
    
    // 公有的取值赋值
    // 学号
    public int getIdNum() {
        return idNum;
    }
    public void setIdNum(int idNum) {
        this.idNum = idNum;
    }
    // 姓名
    public String getName(){
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    // 性别
    public char getGender() {
        return gender;
    }
    public void setGender(char gender) {
        this.gender = gender;
    }
    // 城市
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    
    // 方法
    public void Init() {
        System.out.println("我是学号为:"+getIdNum()+"的"+getName()+",性别:"+getGender()+",来自于:"+getCity());
    }
}
package This_Demo01;
/**
 *  测试类
 * @author 韦桂金
 *
 */
public class Test {
    public static void main(String[] args) {
        // 创建对象
        Student su = new Student(123421,"西克",'男',"非洲");
        
        su.Init();
        System.out.println(su);   // 输出是:内存地址
        
        su.city = "上海";         // 对象名.属性
        Student.city = "北京";    // 类名.属性
        System.out.println(Student.city);   // 
        
    }
}

 03、内存分析

 

04、代码块:

package The_code_block_Demo01;
/**
 *         代码块:
 *             概念: 使用{}  括起来的一段代码
 *                 分类:
 *                     普通代码吗块    直接在方法或语句中定义的代码块
 *                     构造代码块        直接写在类中的代码块
 *                     静态代码块        使用static 声明的代码块
 *                     同步代码块        多线程对象的时候讲
 * 
 *         执行流程:
 *             静态代码块        -->加载一次
 *             构造代码块        -->每创建一个对象执行一次
 *             构造方法        -->每创建一个对象执行一次
 * @author 韦桂金
 *
 */
public class DemoBlock {
    static int city;
    public DemoBlock(){
        System.out.println("==========我是构造方法=========");
    }
    // 【2】构造代码块
    {
        System.out.println("============我是构造代码块=============");
    }
    
    //【3】静态代码块
    static {
        city = 12;
        System.out.println("============我是静态代码块===============");
    }
    public static void main(String[] args) {
        // 创建对象
        DemoBlock sum = new DemoBlock();
        
        
        //【1】普通代码块
        {
            //定义在方法中的代码
            int age = 20;
            System.out.println(age);
        }
        for(int i = 1; i < 10; i++) {
            {
                int age = 50;
                System.out.println(age);
            }
        }
    }
}

 

05、包

package package_Demo03;
import java.util.Scanner;   // 导入包
/**
 *         package    :    
 *             JAVA中的包.相当于Windows的文件夹的概念
 *                 作用:
 *                     1.分门别类,方便管理 (找起来轻松)
 *                     2.解决类的同名问题
 *                 使用:
 *                     使用package关键字声明包:(声明源文件(当前类)所在的位置)
 *                     如果有包的声明,必须在JAVA源代码的第一句语句(除注释外),且声明一次
 *                 命名:
 *                     1.包名全部小写,声明时使用点分隔,分号结尾.
 *                     2.包名加前辍,通常使用组织倒置域名.
 *                     3.当使用的类对象不在一个包中,使用import 关键字导入(导入包的快捷键:Ctrl+C+O)
 *             java常用包:
 *                 java.util:工具包,一些常用的类库    Scanner   Date
 *                 java.lang:系统默认导入的,String 类保存这个包中
 * @author 韦桂金
 *
 */
public class Package {

}

 

posted @ 2018-01-23 18:27  让优秀成为一种习惯  阅读(159)  评论(0编辑  收藏  举报