多态:成员变量静态方法、非静态方法

2024-05-15 02:12

本文主要是介绍多态:成员变量静态方法、非静态方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 public class Parent {//  父类属性public String name = "父类属性";public int val =  1;//  静态方法public static void means1(){System.out.println("父类中的函数1");}//  实例方法public void means2(){System.out.println("父类中的函数2");}
}
class Child extends Parent {//  子类属性public static String name = "子类属性";public  int val =  2;public static void means1(){System.out.println("子类中的函数1");}@Overridepublic void means2(){System.out.println("子类中的函数2");}
}
class test{public static void main(String[] args) {Parent p=new Child();System.out.println(p.name);//成员变量看左边  "父类属性"p.means1();//静态方法编译运行看左边         = "父类中的函数1"p.means2();//非静态方法编译看左、运行看右    = "子类中的函数2"}
}

成员变量静态方法:编译看左边运行看右边

非静态方法:编译运行都看右。

多态是同一个对象,在不同时刻表现出来的不同形态

举例:猫

我们可以说猫是猫:猫 cat = new 猫();

我们也可以说猫是动物:动物 animal = new 猫();

这里猫在不同的时刻表现出来了不同的形态,这就是多态

多态的前提有三个:

1、要有类的继承/接口的实现

2、要有方法的重写

3、要有父类引用指向子类对象

静态方法在类加载时就已经加载了,在类实例对象建立前就已经存在了,所有无法被后出现的子类对象进行重写。---------------获得结论:C:静态方法:编译和运行都看父类。子类可以继承父类的静态方法,但不能重写。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏而非重写。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性、

Java—多态的成员访问特点“编译看左边,运行看左边”还是“编译看左边,运行看右边”是什么意思?看完就懂了~~_java 多态 变量编译运行看左边-CSDN博客

一看就懂,详解Java多态编译看左,运行看右_编译看左边运行看右边什么意思-CSDN博客

这篇关于多态:成员变量静态方法、非静态方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990514

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

多态的分类

多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。 1,通用的多态又分为参数多态(parametric)和包含多态(inclusion); (1)参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。 例如:泛型   (2)包含多

MySQL中的系统变量权限

MySQL的系统变量用于控制服务器的操作。它们可以是全局的(影响整个MySQL服务器实例),也可以是会话的(仅影响当前客户端会话),或者两者兼有。 你可以使用SET语句来动态地改变这些变量的值。例如: 设置全局系统变量的运行时值: 使用set global语句,该语句需要system_VARIABLES_ADMIN权限(或不推荐使用的SUPER权限)。例如: SET GLOBAL max_

python - 变量和字符串

一.变量 变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”。 •不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值的上边。 •所以有些Python程序员会说“Python”没有“变量”,只有“名字”。 >>> t

线程间通信方式(互斥(互斥锁)与同步(无名信号量、条件变量))

1通信机制:互斥与同步 线程的互斥通过线程的互斥锁完成; 线程的同步通过无名信号量或者条件变量完成。 2  互斥 2.1 何为互斥?         互斥是在多个线程在访问同一个全局变量的时候,先让这个线程争抢锁的资源,那个线程争抢到资源,它可以访问这个变量,没有争抢到资源的线程不能够访问这个变量。那这种只有一个线程能够访问到这个变量的现象称之为线程间互斥。 2.2互斥锁API 1.

php 成员变量赋值用连接符报错

今天遇到一个问题,对类中的一个成员变量赋值,一直报错。就是一个常量连接一个字符串 class FileUploadController extends Controller{private $path = BASEDIR."/Public/Upload"; //上传文件保存你路径private $allowType = array('jpg','png','gif');

PHP中静态(static)调用非静态方法详解

1.PHP中可以静态调用非静态方法么? 今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明static的方法。在我的印象中,我好像是见过这种用法,但又有些不确定。大家都知道,在手册或者教程里,方法被分为静态方法 和非静态方法,通常我们静态调用的方法,肯定是静态方法。 那如果我们调用了非静态方法会怎么样呢?首先做测试。 1