Java学习----day5——(3)面对对象程序设计基础篇(具体篇)

来源:互联网 发布:java源码保护 编辑:程序博客网 时间:2024/05/29 04:22

本文承接之前class设计

1.代码块

代码块分类:1.普通代码块 2.静态代码块 3.构造代码块

1.1普通代码块
按照顺序执行,调用即执行;只调用第一次实例化;
1.2 构造代码块
每次实例化对象即调用
1.3 静态代码块
调用优先级最高!不管是否在主函数内。!只调用一次;

package com.Example.chapter04; /**  * @author Administrator   * @function : 代码块的理解   *             1.普通代码块(11-15)  *             2.构造代码块(17-19)  *             3.静态代码块(24-26)不管产生多少引用,只调用一次  *             */ public class CodeBlock {    public static void main(String[] args)     {        new CodeBlock();        new CodeBlock();        new CodeBlock();    }    {        System.out.println("这是普通代码块");    }    public CodeBlock(){        System.out.println("这是 ---------就是构造方法啦");    }    static {        System.out.println("这是静态代码块------就是用static标识的代码块");    }}

运行结果

2.堆内存和栈内存详解(数组只是初步了解)
2.1堆内存
是完全不知道数据的储存方式,简单理解就是用来存储数组和对象的
2.2栈内存
需要知道数据的存储方式(C++里面碰见过一次,是把形参用到定义数组的长度,需要动态指针,即使用关键字new,我认为是使用堆内存进行初始化)。也就是说用来存储定义好的参数。

3.匿名类
不在栈内存中申请空间进行引用,new 类名();
上面代码块就用到了代码块的概念。

new Demo().outPut();

4.static关键字

1.首先,说个例子,统计该类被实例化多少次,定义变量static int count;count++;这下我们可以看出static的含义。2.全局变量和全局方法;3.需要注意的是静态方法只能调用静态变量;4.调用格式:类名.标识符;
package com.Example.chapter04; /**  * @author Administrator  * @function : Static的理解   *             1作为各个引用的共享资源  *             2通过类名直接调用  *             3static标明的方法中不能使用非static变量*/ public class StaticDesign {    public StaticDesign(){        StaticDesign.count++;        System.out.println("生成新的实例引用"+"\t这是第"+StaticDesign.count+"个实例");    }    public int check=0;    public static int count=0;    public static void outPut(){        System.out.println("这是静态方法");    }    public static void main(String args[]){        StaticDesign Demo1=new StaticDesign();        StaticDesign Demo2=new StaticDesign();        StaticDesign Demo3=new StaticDesign();        StaticDesign.outPut();        Demo1.outPut();         }}

5.this关键字


  1. 调用成员变量和成员方法
  2. 调用构造方法
  3. 表示当前对象

this()只能在构造函数直接互相调用必须放在函数体第一行,并且需要留出一个构造函数作为出口,即某一个构造函数不使用this();
package com.Example.chapter04; /**  * @author Administrator  * @function : this的三大特效   *             1.成员属性  *             2.构造方法  *             3.当前对象*/ public class ThisDesign01 {     public static void main(String[] args) {        PersonAgain personagain=new PersonAgain(23, "光唯");        personagain.getInfo();    }}class PersonAgain{    private int age;    private String name;    public PersonAgain(){        System.out.println("此处Person类无参构造函数发言");    }    public PersonAgain(int age,String name){        this();//第二种     构造方法的调用        this.setAge(age);        this.setName(name);        System.out.println("此处Person类有参构造函数发言"+"\t姓名"+this.getName()+"\t年龄"+this.getAge());    }    public void getInfo(){        System.out.println("试试第三种this的用法"+this);    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;//第一种       成员变量的用法    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;//第一种          成员变量的用法    }}

6.私有属性的访问

  1. 本类引用传递
package com.Example.privateVisit; /**  * @author Administrator   * @date : 2017年3月26日 下午3:06:08  * @function : 本类传递访问私有属性 */ public class SelfConvey {    private int temp=100;    public void changeTemp(SelfConvey SC){        SC.temp=50;    }    public int  getTemp(){        return this.temp;    }    public static void main(String[] args) {        // TODO Auto-generated method stub    SelfConvey aa=new SelfConvey();    aa.changeTemp(aa);    System.out.println(aa.getTemp());    }}
  1. 单例模式
    好像只能解决构造方法私有化
  2. 内部类(暂且放下)
  3. set和get方法(this里面都是这种)
0 0
原创粉丝点击