Java面向对象之 |
您所在的位置:网站首页 › java如何调用成员方法 › Java面向对象之 |
目录 前言 1.访问成员变量 1.1 规则 1.2 代码实现 1.3 类中访问时如何区分局部变量,本类成员变量和父类成员变量? 2.访问成员方法 2.1规则 2.2代码实现 前言上一篇文章中介绍了继承的定义,类图以及代码实现。今天小编继续带大家学习在继承类中如何访问成员变量和成员方法。 1.访问成员变量 1.1 规则两种情况(成员变量重名与不重名的情况) 成员变量不重名的情况下:【1】如果创建的父类对象,那么只能使用父类的东西,没有任何子类的东西。【2】如果创建的是子类对象,也就是说new的子类,那么子类父类的成员变量和成员方法都可以使用,子类没有的方法向父类找。 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式: 【3】直接通过子类对象访问成员变量: 等号左边是谁,就优先用谁,没有则向上(父类)找。 【4】间接通过成员方法访问成员变量: 该方法属于谁,就优先用谁,没有则向上找。 1.2 代码实现 //父类 public class Fu { int numFu=10; int num=100; public void methodFu(){ //用的是本类当中的num System.out.println(num); } } //子类 public class Zi extends Fu{ int numZi=20; int num=200; public void methodZi(){ //因为本类当中有num,所以这里用的是本类的num System.out.println(num); } } //使用 public class Demo01ExtendsField { public static void main(String[] args) { //【1】如果创建的父类对象,那么只能使用父类的东西,没有任何子类的东西。 Fu fu=new Fu(); //创建父类对象 System.out.println(fu.numFu); //10 System.out.println(fu.num); //100 //【2】如果创建的是子类对象,也就是说new的子类,那么子类父类的成员变量和成员方法都可以使用. Zi zi=new Zi(); System.out.println(zi.numZi); //20 System.out.println(zi.numFu); //10 System.out.println("*****************************"); //【3】重名:直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上(父类)找。 System.out.println(zi.num); //优先子类,200 //【4】重名:间接通过成员方法访问成员变量: 该方法属于谁,就优先用谁,没有则向上找。 zi.methodZi(); //200 ,这个方法是子类的,优先用子类的,没有再向上(父类) zi.methodFu(); //100 ,这个方法实在父类当中定义的,属于父类,优先使用父类 } } 1.3 类中访问时如何区分局部变量,本类成员变量和父类成员变量?格式: 局部变量:直接写成员变量名 本类的成员变量: this.成员变量名 父类的成员变量:super.成员变量名 //父类 public class Fu { int num=10; } //子类 public class Zi extends Fu { int num=20; public void method(){ int num=30; System.out.println(num); //30,局部变量 System.out.println(this.num); //20,本类的成员变量 System.out.println(super.num); //30,父类的成员变量 } } 2.访问成员方法 2.1规则在父子类的继承关系中,创建子类对象,访问成员方法的规则: 创建的对象是谁,则优先用谁,如果没有,则向上(父类)找。如果子类覆盖重写了父类的方法,创建的是子类对象,优先使用子类方法。 2.2代码实现 public class Fu { public void methodFu(){ System.out.println("父类方法执行!"); } public void method(){ System.out.println("父类重名方法执行!"); } } public class Zi extends Fu { public void methodZi(){ System.out.println("子类方法执行!"); } public void method(){ System.out.println("子类重名方法执行!"); } } public class Demo01ExtendsMethod { public static void main(String[] args) { Fu fu=new Fu(); fu.methodFu(); //父类方法执行! Zi zi=new Zi(); zi.methodZi(); //子类方法执行!new子类,优先用子类 zi.methodFu(); //父类方法执行!子类当中没有,则向父类找 //创建的是new子类对象,所以优先使用子类方法 zi.method(); //子类重名方法执行! } }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |