1.0Java 继承与多态 - 成员变量访问特点
Posted 澜色海湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.0Java 继承与多态 - 成员变量访问特点相关的知识,希望对你有一定的参考价值。
1.0、Java 继承与多态 - 成员变量访问特点
话不多说直接上代码理解 ->
先创建一个父类Father,一个子类Child
父类:Father.java 文件如下所示 ->
public class Father
int f = 600;
int num = 6000;
public int getFatherNum()
return num;
子类:Child.java 文件如下所示 ->
public class Child extends Father
int c = 900;
int num = 9000;
public int getChildNum()
return num;
父类子类对象获取成员变量的权限 ->
public class Test public static void main(String[] args) //父类对象只能访问父类中的成员变量 Father father = new Father(); System.out.println(father.f); //子类对象既可以访问父类中的成员变量,也可以访问自己类中的成员变量 Child child = new Child(); System.out.println(child.f); System.out.println(child.c);
- 父类对象只能访问父类中的成员变量;
- 而子类对象既可以访问父类中的成员变量,也可以访问自己类中的成员变量;
在父子类的继承关系当中,如果父类和子类的成员变量重名时,子类对象有下面两种访问方式 ->
方式一:直接通过子类对象访问成员变量 -> 创建对象时等号左边是谁就用谁 [ 例如 Child child = new Child 那么 child.成员变量 访问的就是 Child 类中的成员变量,因为创建对象 child 时他的左边是 Child 类 ] ;如果找不到该成员变量,则向当前该类的父类中找;
方式二:间接通过成员方法访问成员变量 -> 该方法属于谁就优先使用谁的;如果找不到该成员变量,则向当前该类的父类中找;
方式一:通过对象去获取重名的成员变量时 ->
public class Test public static void main(String[] args) //当访问父类子类中相同名称的成员变量时,优先使用创建该对象左边的类中的成员变量 Child child = new Child(); System.out.println(child.num); //输出结果为 9000
当访问 父类 子类 中相同名称的成员变量时,优先使用创建该对象左边的类中的成员变量(也就是用 Child 类中的 num;因为创建 child 对象时左边的类的是 - Child;
如果该类中找不到该成员变量,则默认再从该类的父类中找寻该成员变量;
方式二: 通过成员方法获取重名的变量时 ->
public class Test public static void main(String[] args) //子类对象既可以访问父类中的成员方法,也可以访问自己类中的成员方法 Child child = new Child(); child.getChildNum(); //获取得到的是 - 9000 child.getFatherNum();//该方法虽然使用child对象获取的但是该方法仍然属于Father类,所以获取得到的是 - 6000
创建一个子类对象 child ,然后用 child 通过成员方法获取 num 成员变量的值 ->
- getChildNum() 方法是属于 Child 类的,所以获取得到的是 9000;
- getFatherNum() 方法虽然是通过 child 对象去调用的,但是该方法仍然是属于 Father 父类的方法,所以获取得到的是成员变量是 6000;
this、super 关键字 -> 区分 局部变量、类变量、父类变量
public class Father
int num = 30;
public class Child extends Father
int num = 20;
public void testMethod()
int num = 10;
System.out.println(num);//num = 10,局部变量
System.out.println(this.num);// num = 20,本类的成员变量(this就是本类的对象)
System.out.println(super.num);// num = 30,父类的成员变量(super就是父类的对象)
php 三大特点:封装,继承,多态
一.封装
目的:让类更安全
做法:成员变量变为私有的,通过方法间接操作成员变量,在方法里面加限制条件
二.继承
概念:子类可以继承父类的一切
方法重写:在子类里面对父类进行方法重写
特点:单继承:一个子类可以有多个父类,一个父类可以派生出多个子类
override:方法重写
overload:重载,编辑多态
三.多态(运行多态)
概念:父类引用子类实例,由于子类里面对父类的方法进行重写,父类引用在调用该方法的时候表现出的不同状态
条件:1必须发生在集成下
2必须重写父类方法
3父类引用调用方法
如果一个方法需要一个父类参数,可以给一个子类对象
静态
普通成员
普通成员是属于对象的
静态成员
静态成员属于类的
关键字:static
self关键字:在类里面代表该类
在静态方法里面不能调用普通成员
在普通方法里面能够调用静态成员
接口
极度抽象的类
接口里面不能包含成员变量,只能包含成员方法
成员方法可以没有函数体
接口关键字:interface
实现接口的类,必须实现接口里面的所有方法
加载类:
include("./Ren.class.php");
include "./Ren.class.php";
require("./Ren.class.php");
require "./Ren.class.php";
require_once("./Ren.class.php");
require_once "./Ren.class.php";
自动加载类的方法
所有的类文件要放在同一个目录下
所有类文件的命名规则一致
以上是关于1.0Java 继承与多态 - 成员变量访问特点的主要内容,如果未能解决你的问题,请参考以下文章