Java中super ,this关键字和多态的学习

* Java中super ,this关键字和多态的学习*
使用super调用和this调用也很像,区别在与super调用的是其父类的构造函器,而this调用的是同一个类中重载的构造器。
因此呢,super调用父类构造器也必须出现在子类的构造器的第一行,所以this调用和super调用和不会同时出现。子类调用父类的构造器有
如下的几种情况:
第一种:子类构造器在执行体的第一行使用super显示调用父类的构造器,系统将根据super传入的实参列表调用父类的构造器。
第二种:子类构造器在执行体的第一行使用this显示调用本类中重载的构造器,系统将根据传入的实参列表调用本类中的另一个构造器,
执行本类中的另一个构造器是即会调用父类的构造器;
第三种:子类构造器中既没有super也没有this调用,系统将会在执行子类构造器之前,隐式调用父类的无参构造器。
super限定的使用:
super用于限定该对象调用从他的父类继承得到的变量或是方法,子类需要调用父类中被覆盖的方法时候用super限定,(也就是当父类的方法被子类覆盖
的时候,用super限定后可以调用被覆盖的方法或是变量)。
java的多态:
Java中的多态呢靠的是父类或接口定义的引用变量可以指向子类或是具体的实例类的对象,而程序调用的方法在运行期间才动态的绑定,就是引用变量所
指向的的具体的实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的那个方法。说简单了就是把一个子类的对象直接赋给
父类的引用变量时当运行时调用引用变量的方法,其方法的行为总是表现出子类的行为特征,而不是父类的行为特征,这就是可能出现相同类型的变量,
调用同一个方法时呈现了不同的行为特征,这就是多态。
引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法,即使它所引用的对象确实包含了该方法。如果需要让这个引用变量调用它
运行时类型的方法,必须把它强制转化成运行时的类型,就用到了强制转换的运算符。例如:
public class SubClass {
public int book = 6;
public void base() //base
{
System.out.println(“父类的普通方法”);
}
public void test(){ //test
System.out.println(“父类的被覆盖的方法”);
}
}
class Sclass extends SubClass{
public Sclass() {
// TODO Auto-generated constructor stub
}
public String book = “疯狂的Java”;
public void test(){// test
System.out.println(“子类的覆盖父类的方法”);
}
public void sub(){ // sub
System.out.println(“子类的普通方法”);
}
public static void main(String args []){
SubClass sb = new SubClass();
System.out.println(sb.book);
sb.base();
sb.test();
Sclass su = new Sclass();
System.out.println(su.book);
su.base();
su.test();
SubClass sy = new Sclass(); sy 引用变量
System.out.println(sy.book);// 父类的
sy.base(); // 父类的方法
sy.test(); // 子类的方法
//((Sclass) sy).sub(); //强制转换成了运行时候的类型。才能
}
}
// 多态就是编译类型个运行时的类型不相同的时候

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值