package com.lean3;
class Person {
/**
* @param args
*/
int age;//在类当中定义的变量,称为类成员变量
void shout(){
int age = 0;//在方法中定义的变量称为局部变量,局部变量必须赋上初始值
//当局部变量与类成员变量名字相同时,调用的是局部变量,自动隐藏类的成员变量
System.out.println("您的年龄"+age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Person per = new Person();
}
}
/**
* 类的意思是模板,把对象比作汽车的话,类就是设计图纸,当设计图纸变的话,设计的汽车也会跟着变
* 当我们需要使用汽车的功能的话,必须要使用实实在在的汽车,用图纸不行,所以必须设计对象
* 当一个创建一个对象的时候,会对各种类型进行初始化赋值,除了基本数据类以为,其他的都是引用类型
* 区别:new的对象会初始化赋值
* 方法中定义的变量必须手动赋值
* 类中定义的变量,编译器会对它自动赋值
* Person per = new Person();
* new Person会在堆内存中放置,开辟空间
* 会声明一个变量per放入栈内存,然后把new person堆内存的地址赋值给栈里面的per,这样per就能访问Person
* 引用变量就能代替new Person(),来访问类当中的变量(属性和方法)
* ================================================================================================
* 对象的生命周期
*
* =================================================================================================
* 第一种情况: Person per1 = new Person();{
* .........................
* }
* 当per1离开大括号会失效,Person对象没有变量指向它,它就会成为垃圾
* 第二种情况:
* Person per2 = new Person();{
* .........................
*
* per2 = null;
* 当per2设置为空的时候,没有变量指向person,这个时候person也会变成垃圾
* }
* 第三种情况:
* Person per3 = new Person();{
* .........................
*
* Peroson per4 = per3;
* per3=null;现在per4和per3同时指向person ,当per3为空的时候,per4还在指向person,person不会变成垃圾
*
* }
* @author Administrator
* ======================================================================
* 对象的比较
* ======================================================================
* 当一个变量是指向数组或者指向一个对象,这个变量被称为引用类型
* =================================================================
* 类的设计要求:
*
* 一个类就是一个小模块,对于外面只是返回一个值,封装里面的方法
* 强类聚:功能尽量在类的内部完成,不要让外面干预,
* 低耦合:提供给外部尽量少的方法调用
* 总统指挥一支军队作战
* 静态方法不属于任何对象
* ==============================================================
* 构造方法:
* public person(){
* }
* 没有返回类型
* 当在运行构造方法的时候,类当中首先执行的不是给构造方法赋值,而是先给类的成员变量有显示值的先赋值,然后在给构造方法里面的
* 值赋值。
* =================================================
* this既然表示当前类的对象,那this放到哪里堆吗?
* 什么情况下必须用this:
* class A{
* B b;
* public void add(){
* b = new B(new A());
* }
* }
* class B{
* A a;
* public B(A a){
* this.a = a;
* }
*
* }
* 还有一种情况:
* person(){
*
* }
* person(String name){
* this.name=name;
* }
* person(String name,int age){
* this(name);这里就可以省略this.name=name;好处是当这个代码有N多行的时候,这样写简便
* this.age=age;
* }