栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Review03创建对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Review03创建对象

1、创建对象
    怎么创建对象的?
       类名 变量名 = new 类名();
   什么是实例变量?
        对象又被称为实例;
        实例变量实际上就是:对象级别的变量。
        例如:
        public class 明星类(){
            double height;
        }
        身高这个属性所有明星都有,但是每个明星都有自己的"身高值",
        假设创建10个明星对象,height变量应该有10份。
        所以这种变量被称为对象级别的变量。属于实例变量。
    实例变量在访问的时候,必须先创建对象。
    怎么访问实例变量?
       引用.实例变量名

   空指针异常 NullPointerException
       关于垃圾回收器GC:
            在java语言中,垃圾回收器主要针对的是堆内存;
            当一个java对象没有任何引用指向该对象的时候,GC会考虑将该垃圾数据释放回收掉。
        出现空指针异常的前提条件是:
            “空引用”访问实例【对象相关】相关的数据时,都会出现空指针异常。
2、构造方法
    什么是构造方法,有什么用?
      构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。
      换句话说,构造方法是用来创建对象,并且同时给对象的属性赋值。
    重点:当一个类没有提供任何构造方法,系统会提供一个无参数的构造方法。(而这个构造方法被
      称为缺省构造器)
      当一个类提供了一个构造方法,系统就不会提供一个无参数的构造方法了。
    构造方法支持方法重载。
    实例变量的默认赋值操作是在构造方法执行的时候进行的。
    怎么防止缺省构造器丢失?
      建议手动把这个无参的构造方法写出来,这样就不会丢失了。
    注意:
        第一:修饰符列表目前统一写public,不要写public static
        第二:构造方法名必须和类名一致。
        第三:不需要返回值类型也不需要void。
3、封装
    有了封装,才能继承,有了继承才能说多态
    在代码级别上,封装的作用是:
      一个类体当中的数据,封装之后,对于代码的调用人员来说,不需要关心代码的复杂实现,
      只需要通过一个简单的入口就可以访问了,另外,类体中安全级别较高的数据封装起来,外部人员
      不能随意访问,来保证数据的安全性。
    封装的代码实现两步:
        第一步:属性私有化;
        第二步:1个属性对外提供set和get方法。外部程序只能通过set设置,通过get读取,可以在set方法中
               设立关卡来保证数据的安全性。
    带static和不带static方法的区别:
        带static:静态方法
            调用方式:类名.方法名();
       不带static:实例方法,又叫对象方法(同实例变量)
           调用方式:引用.方法名();
   get及set方法格式(开发规范要求)
       get方法
            public 返回值类型 get+属性名首字母大写(无参){
                return xxx;
            }
       set方法
            public void set+属性名首字母大写(有一个参数){
                xxx = 参数;
            }
4、static关键字
    所有static修饰的都是类相关的,类级别的。
   所有static修饰的,都是采用“类名.”的方式去访问;

   成员变量分为:
       静态变量
       实例变量
   什么时候声明为实例变量?什么时候修饰为静态变量?
      在一个类中,每个对象有自己的属性的声明为实例变量,这个类中的所有对象都一样的声明为静态变量
    什么时候声明为实例方法?什么时候定义为静态方法?
      方法一般是描述了一个行为,如果说该行为必须由对象去触发,那么该方法定义为实例方法。
      参考标准:或者说,当这个方法体中直接访问了实例变量,这个方法一定是实例方法。
      我们以后的开发中,大部分情况下,如果是工具类的话,工具类当中的方法一般都是静态的。

    静态代码块
      在类加载时执行,并且只执行一次
       静态代码块在main执行之前自上而下执行(main执行在类加载后了)
       静态代码块提供给程序员这样一个位置,如果有业务需要在类加载的时候,可以写在这里。

   实例语句块
       任何一个构造方法执行前执行,构造方法执行几次,实例语句块就执行几次。
       类似于static的类加载时机,这也是一个特殊的时机,叫做对象构建时机;
       你构造了很多个构造方法,这些方法前面有一部分的语句都是一样的?
           这种情况下,我们就可以把这些相同的代码提取出来放到实例语句块中去。
5、this关键字
    this保存当前对象的内存地址,指向自身;
    所以this代表的是:"当前对象";
    this不能用在静态方法中,因为静态方法中不存在当前对象。
    在实例方法或构造方法中,为了区分局部变量和实例变量时不能省略:
        this.name = name;
    this()的作用:
       代码复用
       this()的调用只能出现在构造方法的第一行,且只能有一行
           this(实际参数列表);
           通过一个构造方法1去调用构造方法2
6、继承extends
    继承相关的特性
   一、B类继承A类,则称A类为:超类(superclass)、父类、基类;
                 称B类为:子类(subclass)、派生类、扩展类;
   二、java中的继承只支持单继承,不支持多继承。c++中支持多继承,这也是java体现简单性的一点,
       换句话说,Java中不允许这样写代码:class B extends A,C{}。
   三、虽然java中不支持多继承,但有的时候会产生间接继承的效果。例如class C extends B{},class B extends A{};
       也就是说,C直接继承B,其实C还间接继承A。
   四、Java中规定,子类继承父类,除构造方法外,剩下的都可以继承。但是private修饰的属性不能在子类中访问。
   五、java中的类没有显示继承任何类,则默认继承Object类,Object类是java语言中提供的根类(老祖宗类),
       也就是说,一个对象与生俱来就有Object类型中所有的特征。
   六、继承也存在一些缺点,例如:CreditAccount类继承Account类会导致他们之间的耦合度非常高,
       Account类发生改变后会马上影响到CreditAccount类。

   “is a”能描述的,都可以继承;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号