Java继承与多态

1、继承:子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。同时,子类可以增加父类没有的属性和方法,或者重写父类的方法;

Java中使用extends关键字来标识两个类之间的继承关系;

子类中可以通过super()语句来调用父类的构造方法,也可以通过‘super.’来调用父类的成员方法,注意:子类只能调用父类publicportected修饰的方法,友好的(defualt)和private修饰的方法不能被调用;

方法的重写:子类方法的名称、返回类型及参数列表与父类中方法的名称、返回类型及参数列表相同,则称子类对父类的方法进行了重写;子类重写父类的方式时,不能修改方法名、返回类型及参数列表,唯一能够修改的就是父类方法的修饰权限,但修饰权限的修改只能升高不能降低,比如可以将父类中的portected的方法改为public的方法;

修饰权限从高至低是:publicporteced,友好的(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;可以用来判断一个类是否实现了某个接口,也可以用来判断一个实例对象是否属于一个类;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值