当前位置: 移动技术网 > IT编程>开发语言>Java > 基于Java中对域和静态方法的访问不具有多态性(实例讲解)

基于Java中对域和静态方法的访问不具有多态性(实例讲解)

2019年07月19日  | 移动技术网IT编程  | 我要评论

王氏冷敷贴总部..大利,别惹小可爱,炒更网

1.将方法调用同方法主体关联起来被称为

2.编译期绑定(静态)是在程序编译阶段就确定了引用对象的类型

3.运行期绑定(动态绑定)是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

4.除了static方法和final方法(private方法属于final方法),其他所有方法都是后期绑定,java中所有的方法都是通过动态绑定来实现多态

5.访问某个域的行为不具有多态性

package polymorphism; 
 
class superfield { 
 public int field = 1; 
 
 public int getfield() { 
  return field; 
 } 
} 
 
class subfield extends superfield { 
 public int field = 2; 
  
 public int getfield() { 
  return field; 
 } 
  
 public int getsuperfield() { 
  return super.field; 
 } 
} 
 
public class fieldpolymorphism { 
 
 public static void main(string[] args) { 
  superfield sup = new subfield(); 
  system.out.println("sup.field = " + sup.field + ", sup.getfield() = " + sup.getfield()); 
  subfield sub = new subfield(); 
  system.out.println("sub.field = " + sub.field + ", sub.getfield() = " + sub.getfield() + 
    ", sub.getsuperfield() = " + sub.getsuperfield()); 
 } 
 
}

输出结果:

sup.field = 1, sup.getfield() = 2
sub.field = 2, sub.getfield() = 2, sub.getsuperfield() = 1

当subfield对象转型为super引用时,任何域访问操作都将由编译器解析,因此不是多态的,subfield实际包含两个称为field的域:自己的和从superfield处继承来的

通常将域设置成private,不能直接访问,也不能被继承,通过调用方法来访问

6.访问某个静态方法不具有多态性,不与单个对象相关联

package polymorphism; 
 
class super { 
  
 public static string staticmethod() { 
  return "super staticmethod()"; 
 } 
} 
 
class sub extends super { 
 public static string staticmethod() { 
  return "sub staticmethod()"; 
 } 
} 
 
public class staticpolymorphism { 
 
 public static void main(string[] args) { 
  super sup = new sub(); 
  system.out.println(sup.staticmethod()); 
  system.out.println(sub.staticmethod()); 
 } 
 
}

输出结果:

super staticmethod()
sub staticmethod()

以上这篇基于java中对域和静态方法的访问不具有多态性(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网