Java面向对象之

您所在的位置:网站首页 java如何调用成员方法 Java面向对象之

Java面向对象之

2024-07-11 10:07| 来源: 网络整理| 查看: 265

目录

前言

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