java进阶——类与对象

近来有对类与对象进行了更深入的学习,补充完善一下之前的博客。

一、认识对象

        所谓对象,是对客观事物的抽象,这似乎并不好理解,那么就通过实例来理解一下。

        那么请问生活中的对象有哪些?第一次,我的回答是:鼠标、电脑、人......

        然而,我的回答并不正确,因为我所答的并不能准确指定生活中的某一客观事物,所以,如果把答案改为:我的鼠标,我的电脑、我......答案无错。

二、描述对象

        描述对象,需要描述两个方面:特征、行为。

        相信这很好理解。

        一人的特征:身高、体重、外貌、名字、性别......

        一个人的行为:学习、运动、吃饭、刷牙......


       Java中关于对象的代码:

       

       1、实例化对象

        类名 对象名 =new 类名();

        例如:

       Student  stu=new Student();

      2、调用属性和方法

         对象名.属性名;

         对象名.方法名();

         例如:

         stu.name;

         stu.sthdy();



三、认识类

         所谓类,是对对象的抽象,对象是类的实例,类是对象的模板。

        之前我的回答:鼠标、电脑、人......便是类了。

         而电脑的特征中:Cpu型号,耗电量,显示器型号......这些有可以各成一类。所以类也可以是特征中的一部分。

四、划分类

         类似于描述对象,划分类需要根据对象的相似的特征和相似的行为(方法)进行归类。

        方法分为两类:1.构造方法(构造器、构造函数)  2.普通方法

         Java中关于类的代码:

   

        1、定义类

            public class 类名{

                   //属性的格式

                    访问修饰符  数据类型  属性名;

                   //方法的格式

                    访问修饰符 返回值类型  方法名(数据类型  参数名,   ....)

                        {

                                //方法的代码

                       }

                  访问修饰符  构造方法名(数据类型 参数名,...){
//代码
}

                 }

注:访问修饰符在我的论文:浅识——java类的继承 中已列表  

             例如:

             public class Student {
   // 定义整数类型的学分属性
   public int score;
   // 定义字符串类型的姓名属性
   public String name;

   //定义一个学习课程的方法  sub就是要学习的课程对象,Subject是课程类型
    public void study(Subject sub){
  
//减少课程的课时
sub.time--;
System.out.println(name+"正在学习"+sub.name+"课程,剩余的课时是"+sub.time);

//判断sub课程对象的课时是否学完
if(sub.time==0){
score += sub.score;//学生的学分增加课程的学分\
System.out.println(name+"已经学完了"+sub.name+"课程,"+name+"现在的学分是"+score);
}
}

public void study(Car car){
System.out.println(name+"正在学习开"+car.name);
}

public Student(String name){
this.name = name;
}

}

五、补充:构造方法

       Java默认会给类提供一个无参数的构造方法。

        即:public Student(){  }

      但当一个类中出现了其他的带参构造方法,则java便不会提供无参数的构造方法了。实例化对象是也不能使用无参构造方法。

       可以在子类中定义父类中没有的构造方法。

构造方法的用途:1.实例化对象(就像你的名字是出生前取的)

                              2.传递参数

六、补充:this关键字

        当你的参数名和属性名相同时,可以使用this关键字来做区分,加上this的表示属性名,没有加的则表示参数名。

七、方法重载

理解:方法名相同,但是处理的对象,方法不同时需要重载。

1.现实生活中什么情况下需要使用方法重载?
普通方法:学生——>学习:1课程2开车、...
构造方法:贾宝玉出生的时候_带通灵宝玉  

                                   林黛玉出生的时候_不带通灵宝玉
2.方法重载的实现:
1.方法名必须要相同
2.方法的参数不同(个数、类型、顺序)

八、对象和基本类型的内存分配

理解:对单个数值java采取栈存储,对类、串等二元以上数据的存储,是利用指针和地址的堆存储。

         所以,若:

                 String str = "abc";
String str2 = "abc";

                           str=str2;

则:对str、str2中任一串的修改同时对两个串生效。


这里 ,若a=b=5,则java会使a和b共享内存而节省空间,指导其中一值出现变化才会另分配储存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值