1.方法重载
和c++的函数重载一样,主要是实现多个相同的函数名,但是参数表不同.
参数表不同主要有以下几种
2.类和对象
类class
用来描述一个对象的结构,但是类不能直接使用,必须生成对象后才能使用
对象
通过类来生成的一个对象, 根据类生成的对象都具备相同的行为(class成员函数),但是属性(class成员变量)不一定相同.
3.对象引用分析
示例如下:
class people { string name; public void print(){ system.out.println("name:"+name); } } public class test{ public static void main(string args[]){ people peoplea = new people(); //在栈空间定义一个peoplea地址,然后通过new在堆空间创建一段内存,使peoplea引用它 peoplea.name ="小张"; people peopleb = peoplea; //在栈空间定义一个peopleb地址,然后使peopleb引用peoplea所指向的堆空间. peopleb.print(); } }
打印如下:
可以看到通过引用,可以让两个对象指向同一块堆空间
4.类的封装
成员变量访问权限有以下4种:
5.构造方法
示例:
class people { public people(string name){ //构造方法 this.name = name; //类中有个隐藏的this属性,它永远指向当前对象 } public void print(){ system.out.println("name:"+name); } } public class test{ public static void main(string args[]){ people peoplea = new people("小张"); //调用 构造方法people(string name) 来初始化属性 peoplea.print(); } }
6.析构方法
ps:一般用不到它,因为java有自动内存回收机制
计数当前共有多少个对象示例,代码如下:
class counter { private static int cnt = 0; public counter() { cnt++; } public static void printcnt() { system.out.println("cnt:"+cnt); } protected void finalize() { cnt--; } } public class test{ public static void main(string args[]){ counter cnt1 = new counter(); counter.printcnt(); counter cnt2 = new counter(); counter.printcnt(); cnt2 = null; //将cnt2置为null try { system.gc(); //告诉回收站,有垃圾,需要清理内存 thread.currentthread().sleep(1000); //休眠1000毫秒,因为需要给finalize()方法提供执行时间 counter.printcnt(); //释放掉cnt2后,则输出1(因为还有cnt1存在) } catch(interruptedexception e) //sleep休眠可能产生interruptedexception异常.所以需要用try捕捉 { e.printstacktrace(); //打印回溯信息 } } }
运行打印:
如对本文有疑问, 点击进行留言回复!!
Android 4.0使用Kotlin调用C语言以及汇编语言
Java Class.forName()用法和newInstance()方法原理解析
网友评论