文档章节

JAVA学习日志(7-2-子父类中成员的特点)

Almon
 Almon
发布于 2016/07/19 22:23
字数 853
阅读 2
收藏 0

子父类出现后,类成员的特点:

    类中的成员:

        1.变量

            如果子类中出现非私有的同名成员变量时

、        子类访问本类变量用this,访问父类变量用super

class Fu{
	int num=4;
}
class Zi extends Fu{
	int num=5;
	void show(){
		System.out.println(super.num); //关键字super:引用父类对象
	}
}
class ExtendsDemo2{
	public static void main(String[] args){
		Zi z=new Zi();
		z.show();
	}
}
//输出结果为4

 


2.函数

            当子类和父类出现一模一样的函数时,

            当子类对象调用该函数,会运行子类函数的内容

            这种是函数的另一个特性:重写(覆盖)

                当子类继承父类,沿袭了父类的功能到子类中,

                但是子类虽具备该功能,但功能的内容却和父类不一致,

                这时没有必要定义新功能,而使用覆盖特性,保留父类的功能定义

                并重写功能内容


class Fu{
	void show(){
		System.out.println("我是你爸爸");
	}
	void speak(){
		System.out.println("VB");
	}
}
class Zi extends Fu{
	void show(){
		System.out.println("我没你这儿子"); 
	}
	void speak(){
		System.out.println("JAVA");
	}
}
class ExtendsDemo2{
	public static void main(String[] args){
		Zi z=new Zi();
		z.show();
		z.speak();
	}
}

该特性可用于更新、扩写功能

class ExtendsDemo2{
	public static void main(String[] args){
		newTel t=new newTel();
		t.show();
	}
}
class Tel{
	void show(){
		System.out.println("number");
	}
}
class newTel extends Tel{
	void show(){
		super.show();
		System.out.println("name");
		System.out.println("pic");
	}
}

**子类覆盖父类,必须保证子类权限大于等于父类权限,否则编译失败

   静态只能覆盖静态

与重载的区别

    重载:只看同名函数参数列表

    重写:子父类方法一模一样


        3.构造函数

            在对子类对象进行初始化时,父类的构造函数也会运行,

            那是因为子类的构造函数默认第一行有一条隐藏的语句super( );

            super():会访问父类中的空参数的构造函数 而且是子类中所有的构造函数的默认第一行

class ExtendsDemo2{
	public static void main(String[] args){
		Zi z=new Zi();
		Zi z1=new Zi(4);
	}
}


class Fu{
	Fu(){
		System.out.println("fu run");
	}
}
class Zi extends Fu{
	Zi(){
		System.out.println("zi run");
	}
	Zi(int x){
		System.out.println("zi..."+x);
	}
}
/*输出结果为
   fu run
   zi run
   fu run
   zi...4
*/

如果父类没有空参数,则必须在子类中指明访问对象:super(参数)

为什么子类一定访问父类的构造函数:

    因为父类中的数据 子类可以直接获取,

    所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的

    所以子类在对象初始化时,要先访问父类中的构造函数

    如果要访问父类中的指定函数,可以通过super语句指定(super语句必须写在第一行与this()                                                                                                不能共存)

    **子类的实例化过程:

        子类的所有构造函数,默认都会访问父类中空参数的构造函数

        因为子类每一个构造函数内的第一行都有一句隐藏的super();

        当父类中没有空参数的构造函数时,子类必须通过super或this语句来指定要访问的函数

       子类的构造函数也可以手动指定this语句来访问本类中的构造函数

        子类中至少会有一个构造函数来访问父类中的构造函数 

class Person1{
	private String name;
	Person1(String name){
		this.name=name;
	}
}
class Student1 extends Person1{
	Student1(String name){
		super(name);
	}
	void method(){
		super.show();
	}
}

 

© 著作权归作者所有

Almon
粉丝 2
博文 78
码字总数 55788
作品 0
江北
私信 提问
简单的入门Android开发和Java语言基础[图]

简单的入门Android开发和Java语言基础[图] 前言: 去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居。于是就将最简单的通信发布出来:智能家居简单实现—...

原创小博客
2018/08/04
49
0
java中面向对象的三大特性小结

java中面向对象的三大特性:封装、继承、多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节。数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据...

余大彬
2018/08/06
0
0
Java基础知识总结(绝对经典)

本人学习java时,做的java基础知识总结: 因内容较多,提供原文链接下载。 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句...

石小全
2012/04/08
106.1K
6
ThreadLocal与InheritableThreadLocal区别

最近项目中为了让打印的日志可以追踪,看到了Logback和log4j2支持的MDC功能,其内部利用了子线程从父线程继承InheritableThreadLocal类型变量的特性。以前只使用到了ThreadLocal,在这里做一...

特拉仔
2018/09/01
440
0
关于hibernate的一些小记

最近接触的老项目,总是爱用hibernate,维护起来觉得很麻烦,这里随便总结一下hibernate的特点。 首先: 1.hibernate可以直接对java实例操作,达到数据库的增删改查作用,但是这个实例,只对...

杨健-YJ
02/21
21
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
36分钟前
4
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
45分钟前
4
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
45分钟前
4
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
50分钟前
4
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
54分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部