1、继承:子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。同时,子类可以增加父类没有的属性和方法,或者重写父类的方法;
Java中使用extends关键字来标识两个类之间的继承关系;
子类中可以通过super()语句来调用父类的构造方法,也可以通过‘super.’来调用父类的成员方法,注意:子类只能调用父类public、portected修饰的方法,友好的(defualt)和private修饰的方法不能被调用;
方法的重写:子类方法的名称、返回类型及参数列表与父类中方法的名称、返回类型及参数列表相同,则称子类对父类的方法进行了重写;子类重写父类的方式时,不能修改方法名、返回类型及参数列表,唯一能够修改的就是父类方法的修饰权限,但修饰权限的修改只能升高不能降低,比如可以将父类中的portected的方法改为public的方法;
修饰权限从高至低是:public,porteced,友好的(default),private
重载(overloding)与重写(overriding)的区别:
重载是同一个类中允许存在一个以上的相同名字的方法,但具有不同的参数(可以是参数类型不同,也可以是参数个数不同),主要用于定义不同的构造方法,在创建对象时,通过擦混入不同的参数个数或类型来判断使用的是哪个构造方法;
重写展现类的多态性,子类可以对父类的方法进行重写,但方法名和参数必须全部一样,唯一能修改的是父类方法的修饰权限,但只能改高不能改低;
2、Object类:Object类是所有类的父类,除非指定了某个类继承于一个类,否则这个类就继承于Object类;
Object类中常用的几个方法:
getClass(); 获取对象执行时的Class实例,然后通过getName()方法获取该实例的名称;
Demo42 demo = new Demo42();
//获取demo对象所在类的类名,含包名
System.out.println(demo.getClass().getName());//输出 com.llt.Demo42
toString(); 将一个对象返回为字符串类类型的值;
equals(); 比较两个对象的实际雷荣是否相等;‘==’比较两个对象的引用是否相等;
3、上转型对象:
上转型对象的形式:父类名 对象名 = new 子类名
上转型对象不能操作子类中新增的变量和方法,只可以操作重写的方法或隐藏变量;
很简单理解,上转型对象其实也是父类生成的一个对象,既然是父类的对象,那么子类新增的方法肯定不能用啊,同时子类新增加的变量肯定也不能用啊;
4、下转型对象:子类名 对象名 = (子类名)上转型对象/父类对象
根据其形式看出,与数值中的强转有点类似;因为父类创建的对象不一定符合子类对象的需求,比如父类是四边形,那么四边形创建的对象不能就一定说是平行四边形,这个时候使用下转型对象,那么就强制要求了这个四边形创建的这个对象就是一个平行四边形;
Ball b = new Ball();//Ball是BlueBall的父类,创建父类对象
BlueBall b1 = (BlueBall)b;//创建下转型对象
7、多态:父类中的方法被子类重写时,可以产生各自的功能行为;
当一个父类有多个子类时,每个子类都重写了父类的方法,那么此时创建一个上转型对象,这个上转型对象就可以使用所有子类重写过的方法;此时,一个上转型对象可以调用所有子类继承的方法,就展现出多态性;
8、instanceOf操作符:对象/其子类的对象 instanceOf 父类名
只要该操作符左边的对象是右边类的对象或其子类的对象,则为true,否则返回false;可以用来判断一个类是否实现了某个接口,也可以用来判断一个实例对象是否属于一个类;