java 中类:
类是用于描述统一类型的对象的一个抽象的概念,类中定义了这一类对象所因具有的静态和动态属性。
举例: 瓶子
静态: 有一个口、长长的形状-->java类中的成员变量
动态属性: 可以倒水 -->java类中的方法(函数)
1 package com.Demo; 2 import java.lang.*; 3 4 public class Demo { 5 //成员变量 6 private int id; 7 private String name; 8 9 //有参构造方法 10 Demo(int _id,String _name){ 11 id=_id; 12 name=_name; 13 } 14 15 public int getId() { 16 return id; 17 } 18 /* 19 * 为了考虑安全性,不能修改身份号 20 * public void setId(int id) { 21 * this.id = id; 22 }*/ 23 24 public String getName() { 25 return name; 26 } 27 28 public void setName(String name) { 29 this.name = name; 30 } 31 /* 32 * 输出信息 33 */ 34 public void printInfo() { 35 System.out.println("学生身份号:"+id); 36 System.out.println("学生姓名:"+name); 37 } 38 39 //主函数 40 public static void main(String[] args) { 41 Demo tom=new Demo(20,"张三"); 42 Demo john=new Demo(21,"李四"); 43 tom.printInfo(); 44 } 45 46 } 47
代码的详细理解:
Demo tom=new Demo(20,"张三");
Demo john=new Demo(21,"李四");
Demo tom 是局部变量,同时也是引用类型。类的对象tom存放在stack(栈)中
new Demo(20,"张三")是new出来的东西,存放在heap(堆)中,与此同时new Demo(20,"张三") 会调用有参构造函数 Demo(int _id,String _name)。
_id,_name也是也是局部变量,但是id,name是"全局变量"!
_id,_name,tom都是局部变量存放在stack中!
然而 id,name,new class()存放在heap中!
此时整句Demo tom=new Demo(20,"张三")执行结束;
分析内存的变化:
调用完 Demo tom=new Demo(20,"张三"); 这句语句时,stack中的局部变量(_id,_name)全都消失,但是保留类的对象 tom!
构造方法问题:
(1).如果不写构造方法,系统会自动生成默认的构造方法(无参数). 如果有写有参数构造方法,系统不会生成默认的构造方法(无参数).