java基础-02
2021/5/31 14:22:32
本文主要是介绍java基础-02,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package hjx.com.test; import org.junit.Test; /** * @author 阿牛哥 * @date 2021/5/31 */ /* 理解方法的调用 对象名.f([参数]) 对象属于c类 1,编译器查看对象的声明类型和方法名.需要注意的是:也可能存在多个名字为f但参数类型不一样的方法。 例如。可能存在方法f(int)和方法f(String).编译器会一一列举c类所有名为f的方法和超类所有名为f而且可以访问的方法 (超类的私有方法不可访问) 2,接下来,编译器要确定方法调用中提供的参数类型。如果在所有名为f的方法中存在一个与所提供的类型完全匹配的方法,就选择这个方法, 这个过程成为重载解析.如果编译器找不到完全匹配的并且经过类型转换也匹配不了的,就会报告一个错误。(如果经过类型转换有一个匹配 的,也可执行调用,但是类型转换后多个匹配的,也会报告错误 --测试没有这种情况,fload,double,Integer 假设传的是3,调用 的情况是左边优先级搞) 个人理解: C类实现D类 D d=new D(); d.方法() 搜索的范围是D类再Object类 C c=new C(); c.方法() 搜索的范围是先C类再D类再Object类 D d=new C(); d.方法() 搜索的范围是D类,如果该方法被子类复写执行子类的该方法,再 搜索再Object类 如果是多个类的话,根据上面三条规则摸索出实际调用的方法 有点递归的含义 */ public class test7 { @Test public void t1(){ Manager manager = new Manager(); Employee employee = new Employee(); Manager manager1 = new Employee(); //当作父类对象看,调用的方法如果是子类复写的,就执行子类的复写方法,否则就执行父类里的,调用不了子类的非复写方法 manager.fun1(); //Manafer里的如果为 private void fun1() 会报错 原因是类外对象不能访问私有成员 System.out.println("==="); employee.fun1(); System.out.println("===="); manager1.fun1(); //Manafer里的如果为 private void fun1() 会报错 原因的子类复写的方法不能低于超类方法的访问权限 System.out.println("====="); if (manager1 instanceof Manager){ System.out.println("这是Manager"); } if(manager1 instanceof Employee){ System.out.println("这是Employee"); } System.out.println("====="); employee.fun2(3); //假设没有 public void fun2(int a) 就执行 public void fun2(double a) } } class Manager{ private int id; private String name; public Manager(int id, String name) { this.id = id; this.name = name; } public Manager() { } public void fun1(){ System.out.println("manager..."); } } class Employee extends Manager{ public void fun1(){ System.out.println("employee..."); } public void fun2(int a){ System.out.println("执行了第一个方法:"+a); } public void fun2(double a){ System.out.println("执行了第二个方法:"+a); } }
运行结果
manager... === employee... ==== employee... ===== 这是Manager 这是Employee ===== 执行了第一个方法:3 Process finished with exit code 0
这篇关于java基础-02的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略