java多态成员的特点总结

1:成员变量->编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。

运行时:产考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。

(简单说:编译和运行时参考等号的左边)

2:成员函数—>编译时:参考引用型变量所属的类中是否有调用的函数,有,编译通过,没有,编译失败。

运行时:参考的是对象所属的类中是否有调用的函数,有,编译通过,没有,编译失败。

(简单说:编译时看左边,运行时看右边)

3:静态函数—>编译时:参考引用变量所属的类中是否有调用的静态方法,有,编译通过,没有,编译失败。

运行时:参考引用变量所属的类中是否有调用的静态方法,有,编译通过,没有,编译失败。

(简单说:编译和运行看左边)  【其实 静态方法 直接用类名调用即可】

 1 import java.util.ArrayList;
 2 import java.util.Iterator;
 3 import java.util.List;
 4
 5 public class test {
 6
 7     public static void main(String[] args) {
 8         // TODO Auto-generated method stub
 9         A a = new B();
10         a.dosomething();// wo shi A
11         a.b();// hi:B
12         System.out.println(a.aa);// 8
13
14     }
15
16 }
17
18 class A {
19     int aa = 8;
20
21     public A() {
22          System.out.println("A");
23     }
24
25     public static void dosomething() {
26         System.out.println("wo shi A");
27     }
28
29     public void b() {
30         System.out.println("hi:A");
31     }
32
33 }
34
35 class B extends A {
36     int aa = 10;
37
38     public B() {
39         System.out.println("B");
40     }
41
42     public static void dosomething() {
43         System.out.println("wo shi B");
44     }
45
46     public void b() {
47         System.out.println("hi:B");
48     }
49
50 }

3个特点的实例

结果为:

A
B
wo shi A
hi:B
8

时间: 2024-10-28 12:46:01

java多态成员的特点总结的相关文章

C#与Java多态方面的语法差异

C#与Java多态方面的语法差异 2016-11-29 Java代码: public static void main(String[] args) { Mother mother=new Mother(); mother.showName(); Mother human=new Son(); human.showName(); Son sona=new Son(); sona.showName(); } public class Mother { public void showName(){

Java多态的体现--转型

向上转型: 子类的对象赋值给父类的引用: Student s=new Student(); Person p=s; 也就是 Person p=new Student(); 一个引用能够调用哪些成员(变量和方法),取决于这个引用的类型(即父类) 一个引用调用的是哪一个方法,取决于这个引用所指的对象(即子类) 向下转型: 将父类的对象赋值给子类的引用 Student s1=new Student(); Person p=s1; Student s2=(Student)p; 也就是 Person p=

Java多态之动态绑定

目录 Java多态之动态绑定 引用变量的类型 编译时类型 运行时类型 方法绑定 静态绑定 动态绑定 方法表 Java多态之动态绑定 上篇回顾:多态是面向对象程序设计非常重要的特性,它让程序拥有 更好的可读性和可扩展性. 发生在继承关系中. 需要子类重写父类的方法. 父类类型的引用指向子类类型的对象. 自始至终,多态都是对于方法而言,对于类中的成员变量,没有多态的说法. 上篇说到:一个基类的引用变量接收不同子类的对象将会调用子类对应的方法,这其实就是动态绑定的过程.在理解动态绑定之前,先补充一些概

Java: 多态

多态: 可以理解为事物存的多种体现形态. 1,多态的体现 父类的引用指向了自己的子类对象 父类的引用也可以接受自己的子类对象 2,多态的前提 必须是类与类之间有关系,要么继承,要么实现接口 通常还有一个前提:存在覆盖 3,多态的好处 多态的出现提高了程序的扩展性 4,多态的弊端 只能使用父类的引用访问父类的成员 5,多态的应用 转型: 向上转型:可以把子类对象的引用指向给父类对象 向下转型:可以使用子类的特殊功能,但前提是父类的引用也是该子类的对象,也就是说始终做着变化的是子类对象的引用 1 /

Java多态小总结

多态,又可以称为动态绑定,即在运行时确定类型,比如: 1 class A { 2 void draw(){ 3 //输出“A” 4 } 5 } 6 class B { 7 void draw(){ 8 //输出“B” 9 } 10 11 } 这种关系里,如果调用A a = new B(); 此时,被称为向上转型,a的类型可能在很早之前被生命,而在这时候被明确指明是其子类型, 我们如果要去调用draw()方法的时候,会调用输出“B”,这样,便是Java中的“多态”.我们称其为“向上转型”. 但是,

Java 类成员的初始化顺序

Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. ? 1 ?无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test { static Samp

JAVA多态示例

这多态,我觉得是最利害的.在开发大型程序中. 但,也是需要经过足够多的实践经验才能随心利用的. class Quadrangle{ private Quadrangle[] qtest = new Quadrangle[6]; private int nextIndex = 0; public void draw(Quadrangle q){ if(nextIndex < qtest.length){ qtest[nextIndex] = q; System.out.println(nextIn

java多态讲解

JAVA多态 一.相关的类结构 class A ...{ //create by danielinbiti public String show(D obj)...{ return ("A and D"); } public String show(A obj)...{ return ("A and A"); } } class B extends A...{ public String show(B obj)...{ return ("B and B&q

Java多态特性:重载和覆写的比较

Java重载: 在同一个类中 方法具有相同的名字,相同或不同的返回值,但参数不同的多个方法(参数个数或参数类型) public class MethoDemo{ public static void main(String args[]){ int one = add(10,20) ; // 调用整型的加法操作 float two = add(10.3f,13.3f) ; // 调用浮点数的加法操作 int three = add(10,20,30) ; // 调用有三个参数的加法操作 Syst