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 继承与多态 - 成员变量访问特点的主要内容,如果未能解决你的问题,请参考以下文章

Java继承

JAVA面对对象三大特征之继承多态

继承的特点与注意事项

java继承和多态的学习

面向对象语言的特点:封装,继承,多态 之封装

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口