面向对象(一)——包、构造器、多态和instanceof

来源:互联网 发布:floyd算法找路径 编辑:程序博客网 时间:2024/05/02 15:17

      类和对象是面向对象的核心

 
      Java里方法的参数传递方式只有一种:值传递。
      就是将实际参数值的副本传入方法内,而参数本身不会受到任何影响。

 

      方法重载 :两同一不同。同一个类中方法名相同,参数列表不同。其他部分,如返回值类型、修饰符等与方法重载没有任何关系。

       一旦在Java源文件中使用了package语句,则意味着该源文件里定义的所有类都属于这个包。
Java的包机制需要2个方面保证:1.源文件里使用package语句指定包,名;2.class文件必须放在对应的路径下。
如父包中类需要使用子包中的类,必须使用子包得全名,不能省略父包部分。

 

       构造器是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不完全由构造器负责创建的。实际上,当程序员调用构造器时,系统会先伟该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了——这些操作都在构造器执行之前就完成了。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在构造器中通过this来引用它。当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用型
变量,从而让外部程序可以访问该对象。


       子类是一种特殊的父类。Java的子类不能获得父类的构造器。
       多态 
       Java引用变量有两个类型:一个是编译时的类型,一个是运行时的类型。
编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给该变量的对象决定。
如果编译时类型和运行时类型不一致,就会出现所谓的多态(Polymorphism)。

       引用变量在编译阶段只能调用编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法
。Object p= new Person()代码定义一个变量p,则这个p只能调用Object类的方法,而不能调用Person
类里定义的方法。

  instanceof运算符
  instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作数通常是一个类(也
可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的对象是否是后面的类,或者其子类,
实现类的实例。如果是,则返回true。
 
  Object hello = " Hello";
   hello instanceof Object true(String 是Object类的子类)
                             String true
                              Math   false(Math 是Object类的子类)
                              Comparable  true(String实现了Comparable接口)
  String a = "Hello";
   a  instanceof Math 编译无法通过(String类既不是Math类,也不是Math类的父类)

0 0
原创粉丝点击