继承和多态

面向对象编程的三大特征:继承、多态、封装
继承:一种基于已有类来创建新的类的机制。
由继承得到的类称为子类(或派生类),被继承的类称为父类(或超类)。
java中每个类中只允许有一个父类。
相当于一个儿子只能有一个父亲,不会存在多个父亲。
定义:
访问控制权限修饰符 class <子类>extends<父类>
注意:object类是所有累的直接父类或间接父类
继承的意义:根据访问控制权限的不同,子类可以继承父类中某些成员变量和方法,提高了代码的重用型,在子类中也可以添加新的成员变量和方法。
之前介绍的是访问控制符在包和类中的使用权限,现在介绍一下继承里de访问权限。

做一个总体的汇总:

关于同包不同包,之后重点介绍包的使用方式和作用。
注意:被final修饰的类,则该类不能被继承。(java中已有类如:String类、Scanner类、System类、class类等)
      被final修饰的变量,不能重新赋值
      被final修饰的方法,则其子类不能重写
1、当子类成员变量和父类成员变量同名时,对子类来讲,父类的成员变量被子类的同名成员变量覆盖,表现的是子类的成员变量的值,此时称子类的成员变量隐藏了父类的成员变量。

2、子类继承父类方法,对继承过来的方法进行改写的现象叫方法的重写或方法的覆盖。从而在子类中用子类对象调该方法是用重写后的方法。

1)、子类中重写的方法和父类中被重写的方法的方法名和参数列表相同,

2)、返回值类型若无或者基本数据类型与父类被重写的返回值类型相同,若是父类被重写的方法是返回值类型是引用类型子类中重写的方法返回值类型与父类返回值类型相同或者是其子类。

3)、子类重写方法的访问权限必须大于父类被重写方法的访问权限。

4)、若重写父类非静态方法,子类重写该方法时不能用static修饰,父类静态方法只能被子类继承不能被子类重写。

5)、被final修饰的方法只能继承?不能被重写。

3、使用super关键字调用被隐藏的同名父类成员变量或重写后的方法。(注意:this和super都不能在静态代码块或方法中使用)
4、子类继承父类的构造方法,如果父类有无参构造方法,子类中的构造方法没有明确指明调用父类哪个构造方法,且子类构造方法中无指明调用本类的构造方法(即无this放在构造方法有效第一行)super在构造方法有效第一行被隐藏,若使用this调用本类的构造方法,super不存在。如果父类没有无参构造方法,要求子类构造方法有效代码第一行必须直接或间接指定调用父类哪个构造方法。
直接:super([参数])
间接:this([参数])调用本类的构造方法,调用的这个构造方法直接调用了父类的构造方法。
如:
public Text(String a){
super(11);
}
public Text(){
this("AA");
}
多态:即多种状态,父类类型变量指向子类创建的对象,使用该变量调用被子类中重写的方法,表现出与父类不同的行为特征。

当编译时类型变量与运行时类型变量不一致时,且在子类中重写了父类的方法,在使用父类类型变量调用重写后的方法时则出现多态。

上诉所说对象上转型意思是,子类实例化的对象赋值给父类声明的变量,该对象称为上转型对象,这个过程称为对象上转型,相当于基本数据类型中的自动类型转换,是不是立即想到了强制类型转换呢?
这里对象下转型意思是,父类实例化的对象赋值给子类声明的变量,下转型对象存在的前提是一定有上转型对象的存在。
1、上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法
2、上转型对象调用父类方法,若该方法已被子类重写,则表现重写后的行为特征,否则表现父类的行为特征
3、上转型对象调用成员变量,无论该成员变量是否被子类覆盖,使用的都是父类的成员变量。
下转型对象(即上转型对象还原后的对象)又具备子类所有的属性和功能
instanceof运算符可以很好的检验引用类型变量指向的对象是否是某个类创建的对象,真为true,否为false,使用使用instanceof运算符检验提高了代码的健壮性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值