首页 / JAVA / java基础---24. 多态性
java基础---24. 多态性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java基础---24. 多态性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2596字,纯文字阅读大概需要4分钟。
内容图文
1 概述
面向对象三大特征:封装性、继承性、多态性。其中,继承性是多态性的前提。
继承性在java中的体现除了extends还有implements。所以extends继承和implements实现都是继承性的前提。
不一定是类与类之间的继承,还有可能是接口与接口之间的继承,还有可能是类与接口之间的实现
- 注意:多态性指的是对象而不是类
2 多态的格式与使用
代码当中体现多态性,其实就是一句话:父类引用指向子类对象。
- 格式
//方式1:
父类名称 对象名 = new 子类名称();//子类对象就被当作父类进行使用,一只猫被当中动物来看待
//或者
//方式2
接口名称 对象名 = new 实现类名称();
对于方式1举例
- 定义一个父类
public class Fu {
public void method(){
System.out.println("父类方法");
}
public void methodFu() {
System.out.println("父类特有方法");
}
}
- 定义一个子类
public class Zi extends Fu{
@Override
public void method() {
System.out.println("子类方法");
}
}
- 调用
public class Demo01Multi {
public static void main(String[] args) {
//使用多态写法
//左侧父类的引用指向右侧子类的对象
Fu obj = new Zi();
obj.method();//子类方法 对于成员方法,new的是谁就调用谁的方法 若没有就往上找
obj.methodFu();//父类特有方法
}
}
3 多态中成员变量的使用(规则不变)
规则:访问成员变量两种方式
- 1.直接通过对象名称访问成员变量(对象名称.变量名):看等号左边是谁,优先用谁,没有则向上找。
- 2.间接通过成员方法访问成员变量:该方法属于谁则优先用谁,没有则向上找。
注意:成员变量不可以覆盖重写,只有方法可以覆盖重写
举例
- 定义一个父类
public class Fu {
int num = 10;
public void showNum(){
System.out.println(num);
}
}
- 定义一个子类
public class Zi extends Fu {
int num = 20;
int age = 18;
}
- 使用
public class Demo01MutilField {
public static void main(String[] args) {
//使用多态写法,父类引用指向子类对象
Fu obj = new Zi();//等号左边是Fu
//1.
System.out.println(obj.num);//10
//System.out.println(obj.age);//错误写法,Fu中没有age,再向上找是Oject类也不会有age
//2.
obj.showNum();//10 子类没有对该方法覆盖重写则就向上找父输出10;若子类对该方法覆盖重写那就是子输出20
}
}
4 多态中成员方法的使用(规则不变)
规则:看new的是谁,就优先用谁,没有则向上找
口诀:编译看左边,运行看右边
对于成员变量的口诀:编译看左边,运行还看左边
举例
- 定义一个父类
public class Fu {
public void method(){
System.out.println("父类方法");
}
public void methodFu(){
System.out.println("父类特有方法");
}
}
- 定义一个子类
public class Zi extends Fu {
@Override
public void method(){
System.out.println("子类方法");
}
public void methodZi(){
System.out.println("子类特有方法");
}
}
- 使用
public class Demo02MutilMethod {
public static void main(String[] args) {
Fu obj = new Zi();//多态
obj.method();//子类方法
obj.methodFu();//父类特有方法 子类没有改方法,所以向上找到了父类的该方法
//obj.methodZi();//错误写法
//编译看左边,左边是Fu,而Fu当中没有methodZi方法,所以出现红线,编译报错
}
}
内容总结
以上是互联网集市为您收集整理的java基础---24. 多态性全部内容,希望文章能够帮你解决java基础---24. 多态性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。