Java 5.0 java 包和面向对象语言的特点
package包
包的作用:
1.便于管理类
2.解决同名类的问题
3.如何使用包
包名一般使用小写字母,层次之间通过.运算符进行分隔;例如com.oracle.sanguosha.card;
在类文件的第一行语句中使用 package com.oracle.sanguosha.card语句将类放在此包中;
在一个类中使用其它包中的类时,需要使用import 语句进行导入;导入的方式有两种;
只导入一个类 import com.oracle.Person;
导入某个包中的所有类 import com.oracle.*;
package 与 import的区别
package指的是将当前类放在哪个包下,一个类文件只能包含一个package语句,且必须放在第一行;
import 指的是导入哪些包中的类,可以导入多个,应该放在package语句之下。
OOP的高级特性:封装,继承,多态
继承:
通过使用继承,一个类可以直接拥有另一个类的所有属性的方法;从而简化了类的定义;在继承关系中,被继承的叫父类,继承的叫子类;
语法
class 子类 extends 父类{
//定义子类的属性和方法;
}
在java中,一个类最多只能有一个父类,这叫单继承;但可以多层继承;
在继承关系中,一个类即可以是父(基)类,也可是子类;
两个类是否是继承关系,可以使用is来判断:子类 is 一种父类。
方法重写(override):
在继承关系下;子类覆盖父的方法,子类的方法与父类的某个方法名子相同,参数相同;返回值类型相同。
关于继承的说明总结:
父类有的,子类全都有
父类没有的,子类可以增加
父类有的,子类可以修改(重写)
在子类中如何访问父类的成员
可以使用super.属性或super.方法()来访问父类的成员;super代表,父类对象的引用。
构造方法是不可以被继承的,但在子类的构造方法中一定会调用父类的构造方法;
当我们创建一个子类的对象时侯,java会首先创建一个父类的对象,子类的对象包含一个指向父类对象的指针;对于子类对象的访问者来说,不需要关心子类对象的内部结构;
在子类的构造方法中可以使用super()来明确调用父类的某个构造方法,并且将这行代码作为子类构造方法的第一条语句来执行;如在子类中不明确调用父类的构造方法,java编译器会调用父类元参的构造方法,即super();
多态:
同一类事物具有多种不同的形态;
动物
dog
cat
tiger;
代码中:
父类的引用指向子类的对象;
Animal a=new Tiger();
Animal b=new Dog();
a.eat();
b.eat(); Animal a=new Cat(); 以上这行代码,涉及两个类型,编译时类型和运行时类型;
编译时类型(Animal)在编译时起作用,它可以决定a可以调用哪些方法和属性;
运行时类型(Cat):运行时起作用,它可以决定运行时真正调用的方法;
数据类型的转换
upCast(向上转型):直接转换,子类->父类
downCast(向下转型):强制转换(造型) 父类->子类,向下转型有风险,要谨慎;
instanceof 运算符:
作用:判断某个对象是否是某个类的实例;
if( a instanceof Cat){
}