5.2类与对象

类:表示一个客观世界某类群体的一些基本特征抽象,属于抽象的概念集合,定义出一个基本的操作模板,代表共性的集合。对象表示一个个具体的事物,真正可以使用的个体。
类是对象的模板,对象是类的实例
成员属性:保存对象的具体特征。
方法:描述功能,例如跑步,吃饭、唱歌。

5.2.1类与对象的定义

类是由成员属性和方法组成
范例:类的定义

public class Seventy { //定义一个类
        String name;//成员属性 人的姓名
        int age;//成员属性 人的年龄
        /**
         * 定义一个方法,输出属性
         */
        public void tell() {
        	System.out.println("姓名"+name+"  年龄"+age);
        }
}

如果由对象定义时不加static,不是由对象调用的方法加static.
声明并实例化对象:类名称 对象名称 =new 类名称();
对象.成员属性:表明调用类之中的成员属性,可以为其赋值或者获取其保存内容。
对象.方法():表示调用类之中的方法。

package com.lxh.fivachapter;

public class Seventyone {
       String name;
       int age;
       public void tell() {
    	   System.out.println("我叫"+name+", 我今年"+age+"岁了。");
       }
       public static void main(String[] args) {
    	   Seventyone person=new Seventyone();
    	   person.name="李雷";
    	   person.age=21;
    	   person.tell();
		
	}
}

我叫李雷, 我今年21岁了。

范例:关于类中成员属性的默认值

public class Seventyone02 {
	public static void main(String[] args) {
		Seventyone person=new Seventyone();
		person.tell();
	}
	
}

我叫null, 我今年0岁了。

5.2.2对象内存分析

java中类属于引用数据类型,必须通过new关键字开辟新的内存空间。
类中所有成员属性都是私有的,而类中的方法是所有对象共有的。
范例:对象实例化处理

public class Seventythree {
       public static void main(String[] args) {
    	   Seventyone pre=null;
    	   pre=new Seventyone();
    	   pre.age=21;
    	   pre.name="张三";
    	   pre.tell();
	}
}

我叫张三, 我今年21岁了。

注意:对象使用前首先必须进行实例化操作
引用数据类型在使用之前进行实例化操作,如果在开发之中出现了以下代码,那么肯定会出现异常
范例:出现异常的代码(空指针异常)

public class Seventytwo {
	public static void main(String[] args) {
		Seventyone person=null;
		person.name="张三";
		person.age=21;
		person.tell();
	}
	
}
Exception in thread "main" java.lang.NullPointerException
	at com.lxh.fivachapter.Seventytwo.main(Seventytwo.java:6)

5.2.3对象引用传递分析

类是引用数据类型,不同的栈内存,可以指向同一块的堆内存空间
范例:引用传递

public class Seventyfive {
    public static void main(String[] args) {
    	Seventyone per=new Seventyone();
    	per.name="李四";
    	per.age=23;
    	Seventyone per2=per;
    	per2.age =50;
    	per2.tell();
	}
}

我叫李四, 我今年50岁了。

范例:通过方法实现引用传递

public class Seventysix {
    public static void main(String[] args) {
    	Seventyone per=new Seventyone();
    	per.name="张三";
    	per.age=18;
    	chang(per);
    	per.tell();
    	}
    public static void chang(Seventyone temp) {
    	temp.age=90;
    }
}

我叫张三, 我今年90岁了。

5.2.4引用传递与垃圾产生分析

public class Seventyseven {
       public static void main(String[] args) {
    	   Seventyone per1=new Seventyone();
    	   Seventyone per2=new Seventyone();
    	   per1.name="张三";
    	   per1.age=18;
    	   per2.name="李四";
    	   per2.age=20;
    	   per2=per1;
    	   per2.age=80;
    	   per2.tell();
    		
	}
}
我叫张三, 我今年80岁了。

实例化两个对象,分别对两个对象进行赋值。由于发生了引用传递“per2=per1”,所以per2将舍弃原始的引用实体(产生垃圾),将引用指向per1实体。这样当执行“per2.age=80”语句修改的就是per1对象的内容,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值