类和对象是面向对象的核心
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类的父类)