JAVA面向对象(5)

一、构造方法的问题

                   1、在创建有继承关系的子类对象时,一定会先执行父类中的构造方法(默认情况下JVM会执行的是父类中无参数的构造方法),然后再执行子类中的构造方法。

                   2、如果父类中此时不存在无参数的构造方法,那么在创建子类对象时,会提示编译错误;此时我们还想创建子类的对象,有两种解决办法:第一种,在父类中添加一个无参数的构造方法;第二种通过super(参数列表)明确告诉JVM调用我指定的构造方法来创建父类对象。

                   super(参数列表),只能出现在子类构造方法的第一句代码,表示在创建子类对象时,需要使用指定的构造方法来创建父类对象。

二、方法重写

                  条件:方法重写只能出现在有继承关系的子类中,而且是子类对父类方法的重写。
          方法重写:
                  子类重写父类中的方法,必须要和父类中的方法名、参数列表完、返回值类型全一致,而且访问修饰符的范围不能缩小。

  重写的目的:当父类中的方法无法满足子类的需求时,子类可以对其进行改造以达到子类的需求。其实是子类对父类功能的扩展

三、多态

   同一个事物在不同的环境中有多种不同的表现形式。

   多态有两种不同的表现形式:
    方法重载
    方法重写

   
   向上转型,就是创建一个子类的对象,并赋值给父类对象。自动转换,因为父类就包含了子类。

   向上转型的对象,就要把他当作父类对象来用,它可以调用父类中所有的普通属性和方法;但是如果用向上转型的对象,调用被子类重写的方法时,就会发生动态绑定(延迟绑定)机制,JVM会判断当前对象时谁创建的,谁创建的就调用谁里面的方法。


   向下转型,就是把父类对象赋值给子类类型,但是一定是建立在向上转型的基础上,做类型的还原。

   通过instanceof关键字,可以判断某个对象是否属于这种类型,用法:
           对象名 instanceof 类名;返回的结果是boolean类型的


           发生多态的条件:
                    1、要有继承
                    2、要有重写
                    3、要有向上转型
                    4、要用向上转型的对象调用被子类重写的方法。

四、static关键字

           static可以修饰成员属性、方法,所修饰的元素都属于类,而不属于某个对象。而且在进行
           代码加载时,JVM就会立马给类中静态的元素进行内存空间的分配。

           没有被static修饰的成员属性,称为实例属性,属于对象。

   static修饰的元素特点:
            1、 static修饰的属性和方法,无论创建多少个对象,它们只会被JVM加载一次

            2、 static修饰的属性和方法,建议通过类名.属性名或者方法名的方式来调用。

            3、 static修饰的属性和方法,分为称为静态属性和静态方法

            4、 无论创建多少个类的对象,static修饰的属性和方法,只会被加载一次,而且他们
    被所有的对象共享。

   static修饰的方法,被称为静态方法,静态方法建议通过类名.方法名(参数列表)来调用

   特点:
            1、 静态方法中,只能调用静态的属性和静态的方法

            2、 在非静态方法中,可以调用静态的方法和属性也可以调用非静态的属性和方法

            3、 在静态方法中,无法使用this和super关键字    
    

   静态代码块,只能出现在类的内部,任何方法的外部。
           语法:
                    static{


                    }

   作用:给静态的成员属性进行初始化。

四、Object类

    位于java.lang包中,它是Java中所有类的父类(根类、基类、超类);如果一个类没有明确指明它的父类,父类默认就是Object类。
    

            public String toString()方法,返回当前对象的哈希码值16进制表示

            public int hashCode()方法,返回当前对象的哈希整数值

五、访问修饰符

    访问修饰符指的是元素可以被使用的范围。

            private :它可以修饰属性、方法,修饰的元素只能在当前类中使用。
    
            默认的:它可以修饰属性、方法,修饰的元素只能在当前类或当前同一个包中的    类。
            protected:它可以属性属性、方法,修饰的元素只能在当前类或同一个包中的类,以及不同包中的子类。

            public:公共的,它可以修饰属性、方法、类,修饰的元素可以被任何其它类来访问。
    
六、包
        
            包主要是为了解决类命名冲突的问题

            包是有层次结构的,包之间用.分割

    创建包:
            package 包名;

             创建包的语句一定是java源文件的第一句代码


            导包:当你使用的类和当前类不在同一个包下,需要导包。
    语法:
            import 包名.*; 或者  import 包名.类名;

            import一定要位于package的下面。
 

                

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值