java的类与对象

例题:

        我有两只狗子,一只叫小白,今年4岁,白色;另一只叫小黑,今年8岁,黑色。要求当我们输入狗子的名字时,就显示出它的所有信息,如果用户输入的名字错误,则显示未能找到。

1)利用单个的变量来进行解决

        String dog1name="小白";
		int dog1age=4;
		String dog1color="白色";
		
		String dog2name="小黑";
		int dog2age=8;
		String dog2color="黑色";

这样做表面看上去没有什么问题,确实可以做到,但是当我们每拥有一条狗子的时候我们都要去进行一次变量的定义,这显然很离谱,也不可能有这么多的资源来让你存储变量。

2)利用数组进行存储

        String[]dog1= {"小白","4","白色"};
		String[]dog2= {"小黑","8","黑色"};

这样也能进行解决,但是这样每个数据的类型就只能统一成一种才行,有许多的弊病;也只能通过数组的下标来进行数据的获取,会造成变量名字与内容的对应关系不对应;不能体现出它的行为特征

总而言之在之前的学习的内容,不能够很好的解决其对于数据的管理,并且效率很低;

这样就需要另外的一种技术:类与对象。

类就相当于是一个自定义的一个数据类型,它可以被定义的很复杂,里面可以有属性以及行为。

对象就是一个具体的实例。

使用面向对象的方式进行解决上述问题:

a:先定义一个Dog类

//class :类的关键词
class Dog{//该类所具有的属性
	String name;//名字及其对应的数据类型
	int age;
	String clolor;
}

b: 实例化对象并对其进行赋值操作

	    Dog dog1=new Dog();//实例化出来一个实体dog1
		dog1.name="小白";//对dog1的各个属性进行赋值
		dog1.age=4;
		dog1.clolor="白色";
		//这里的运算符‘.’可以理解为“的”。
		Dog dog2=new Dog();//实例化出来一个实体dog2
		dog2.name="小黑";//对dog2的各个属性进行赋值
		dog2.age=8;
		dog2.clolor="黑色";

c:进行访问数据

System.out.println("狗子的信息:"+dog1.name+" "+dog1.age+" "+dog1.clolor);
System.out.println("狗子的信息:"+dog2.name+" "+dog2.age+" "+dog2.clolor);

输出为:

 到此我们就可以完成这道例题的要求了:

Scanner myScanner=new Scanner(System.in);
		System.out.print("请输入狗子的姓名:");
		
		String dogname=myScanner.next();
		
		if(dogname.equals(dog1.name)) {
			System.out.println("狗子的名字:"+dog1.name+" "+"狗子的年龄"+dog1.age+" "+"狗子的颜色:"+dog1.clolor+" ");
		}else {
			System.out.println("没能找到狗子的相关信息");
		}
		if(dogname.equals(dog2.name)) {
			System.out.println("狗子的名字:"+dog2.name+" "+"狗子的年龄"+dog2.age+" "+"狗子的颜色:"+dog2.clolor+" ");
		}else {
			System.out.println("没能找到狗子的相关信息");
		}

结果:

到此,我们看出

1)类是抽象的,概念的,代表的一类事物,如人类,物种的种类等等

2)对象是具体的,实际的,代表的一个实例,如上述的dog1,dog2啥的

3)类是对象的模板,对象是类的一个个体,对应一个实例

PS:新建类类放在程序的最外面,即在公共类外,不然会报No enclosing instance of type Obj_01 is accessible. Must qualify the allocation with an enclosing instance of type Obj_01 (e.g. x.new A() where x is an instance of Obj_01).这类的错误。这个会成为公共类中的内部类,不能直接在main方法中实例化,main方法是static类。可以将内部类定义成static class ,或者当做普通的类来定义(拿到公共类外部定义)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值