栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java对象(3)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java对象(3)

子类继承父类时的变量类型
  1. 子类继承父类方法时,子类对象调用父类方法,父类方法中引用的是父类的成员变量,甚至是私有变量。(意思是说子类没有重写父类的方法,继承了父类的方法,则当子类对象调用该方法时,方法中引用的变量都是父类的变量)
  2. 子类实例方法覆盖父类实例方法时,子类对象调用的是子类方法,方法中的成员变量是子类的。(子类中重写了父类的方法,当子类对象调用该方法时,方法中引用的变量是子类的。)
  3. 多态时,即父类引用指向子类对象时,对象调用同名方法,调用的是子类的方法。(上转型时)
    这就是上篇末尾疯狂打感叹号的地方

super引用

super在程序中表示当前对象的父类,是对当前对象的父类对象的引用。在Java中,当子类的变量或方法隐藏了父类中的变量或静态方法,而在子类中又要引用父类的成员时,就要使用super。

super的用法

  • 调用父类的构造方法。子类不能继承父类的构造方法,在子类的构造方法体中,可以使用super调用父类的构造方法
    super([参数列表]);
  • 引用父类同名的成员。当子类重定义了父类成员时,则存在同名成员问题。此时在子类方法体中,成员变量和成员方法均默认为子类的成员变量或成员方法。如果需要引用父类的同名成员,则需要使用super引用。(当子类覆盖父类实例成员方法或子类隐藏父类成员变量和静态方法,可以使用super. 进行调用)
       不知道你是否有些许问号,就是覆盖和隐藏到底有什么区别呢?覆盖和隐藏都是子类重写了父类的某些东西,覆盖是子类重写了父类的实例成员方法,隐藏是子类重写了父类的成员变量和静态方法。
       我是这样理解的,在上转型中,子类调用实例成员方法时,调用的是子类的实例方法,因为父类的成员方法被覆盖了。子类调用成员变量或静态方法时,调用的是父类的,因为子类的成员变量和静态方法被隐藏了。(可能不太准确啊,如果有错误,请一定指正!!)

几点需要注意的地方

  • super不能像this一样单独使用,如return this; this=a;
  • super只能在子类使用(这一点似乎显而易见)
  • super不能引用父类的私用成员(这点需要注意!!)
  • super不能用在静态方法中,与this一样。因为没有所指的对象。

abstract修饰的类

很像C++的virtual,相信你理解起来一定非常轻松

使用关键字abstract声明的类称为抽象类

Public abstract class Graphics{
	//图形类,抽象类
	public abstract double area(); 
	//计算面积,抽象方法,只写定义不写实现!分号必不可少!
}

为什么要有抽象类呢?
想想在上一篇,上转型部分。那个demo中的父类Patterning中的getArea和getPerimeter方法的实现,直接return 0;所以这个方法体的实现并没有什么意义,在抽象类中,就无需写方法体的实现了。

抽象类的性质
1.抽象类不能够被实例化。
2.抽象类中可以不包含抽象方法,但包含抽象方法的类必须声明未抽象类。

抽象方法的性质
1.抽象方法必须被子类覆盖
2.不能将构造方法、类成员方法声明为抽象方法
3.abstract抽象方法不能和static同用
4.父类的非抽象方法可以被子类的抽象方法覆盖
这里是一个抽象类去继承一个非抽象类,重写父类的方法,不常用


可以自己试着去把上篇上转型部分的demo用抽象类修改一下。Java对象的还有最后一更,会过几天吧。这几天要研究一下Android开发和CTF招新赛了!>_>,加油!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号