Java学习笔记之六——Java类的继承和多态(1)

标签: java 学习 笔记 | 发表时间:2013-01-10 11:31 | 作者:liwustore
出处:http://www.cnblogs.com/

一,Java类的继承

1,为什么要继承?

答:通过继承可以使对对象的描述更加清晰,可以实现代码的复用,可以实现重写类中的变量或方法,可以实现在无源代码的情况下修改被继承的类。

2,Java的类如何实现继承?

答:Java类的继承是单一的,也是完全继承的。通过关键词extends关键字来实现。被继承的类称为父类,继承父类的类称为子类。继承语法:public calss classname extends superclassname.因为Java类的继承是单一的,所以extends后面只能指定一个父类。而完全继承则是指“一个类继承了父类的所有成员变量和成员方法。

例:在l类1中的平面坐标系中设置x和y,当要再定义一个空间坐标系的时候只需继承类1,再在其子类中添加一个z轴就行了。

public class one{
int x;
int y;
public one(){
x = 0;
y = 0;
}
}

然后再定义类2,通过类2继承类1:

public class two extends one{ //继承类one
int z;
public one(){
z = 0;
}
}

这样就实现了类的继承。

3,类继承中的隐藏/覆盖/重载是怎么样的?

答:(1)类的隐藏:隐藏发生在子类和父类之间,针对父类中成员变量和静态方法而言的。当子类中声明与父类中声明的成员变量名相同时,则实现了对父类成员变量的隐藏。

  (2)类的覆盖:覆盖也是发生在子类和父类之间,是指在子类中声明一个与父类具有相同的方法名/输入参数列表/返回值/访问权限等的方法,除过方法体不同外。在子类中重新编写方法实现的功能。 常被用于替换父类相同的方法,实现功能的更新。

例:

class three{
public void Display(){ //定义父类中Display方法
System.out.println("This is class three");
}
}
class four extends three{ //继承类three
public void Display(){ //覆盖父类three中的Display方法
System.out.println("This is class four");
}
}

  (3)类的重载:可发生在父类与子类之间,也可发生在同一类中。是指在子类与父类之间或同一类中定义多个具有相同方法名/访问权限等的方法。

例:

class five{
public void Display(){ //父类中Display方法
System.out.println("this is class five");
}
}

class six extends five{ //继承类five
public void Display(String s){ //冲在父类中Display方法
System.out.println(s);
}
}

public class seven{
public static void main(String[] args){
six a = new six();
a.Display(); //调用父类中Display方法
a.Display("this is class six"); //调用子类中Display方法
}
}

4,构造方法的重载.

在上例中 six a = new six();new后面是调用类的构造方法,如果当类没有构造方法的时候,创建类对象时调用无任何操作的默认构造方法。当子类有自身的无形式列表的构造方法时,创建对象时,会先创建父类的对象,再创建子类的对象。

如下面代码:

//第一个类-------父类
public class Output{
public Output(){
System.out.println("This is class Output");
}
}


//第二个类-------子类
public class Input extends Output{
public Input(){
System.out.println("This is class Input");
}
}


//第三个类
public class sample{
public static void main(String[] args){
Input a = new Input();
}
}

上面代码最后输出为:

This is class Output

This is class Input

可见最后如果没有构造方法,创建对象后会先调用父类对象,后调用子类对象。

本文链接

相关 [java 学习 笔记] 推荐:

Java学习笔记之六——Java类的继承和多态(1)

- - 博客园_首页
答:通过继承可以使对对象的描述更加清晰,可以实现代码的复用,可以实现重写类中的变量或方法,可以实现在无源代码的情况下修改被继承的类. 2,Java的类如何实现继承. 答:Java类的继承是单一的,也是完全继承的. 通过关键词extends关键字来实现. 被继承的类称为父类,继承父类的类称为子类. 继承语法:public calss classname extends superclassname.因为Java类的继承是单一的,所以extends后面只能指定一个父类.

Java与Flex学习笔记----用CSS控制页面样式

- - BlogJava-首页技术区
以前对于Flex网页布局还不是很明白,基本上没有什么修饰. 但是做完了一个仿“115网盘”的页面后,对页面控制有了一个基本的了解,现总结一下.      本人一开始接触的就是Flex4,据说Flex3的css布局很脊椎,也不知道是不是这样. 但是Flex4的网页布局很牛X,再配上各种事件,可以实现需要写很多JavaScript/Ajax代码才能实现的效果.

java并发编程实践学习笔记

- - zzm
    原子操作:原子为不可再分操作.    Violation :可见关键字.    Synchronized:内部隐示锁 .    ReentrantLock:显示锁 .    ReentrantReadWriteLock:读写锁 . jmm(java内存模型):. 线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递 均需要通过主存完成.

json学习(java篇)

- - 博客园_首页
前一个小项目中用到了json:服务器返回的数据有xml或者json格式的数据,由于json简洁、轻量、高性能等优点,我们当时就采用的是json格式的数据. 上个月没有心情学习啊,就索性多玩会儿,不过今年得有个目标,至少博客得多写写,质量上也希望比前几个月有所提升,那就开始吧. 先从json基础知识开始学起.

shell 学习笔记

- tiger - 游戏人生
将脚本目录加到 PATH 中. 在 dash 中如何进行字符串替换. 将 rst 格式文档转换为 blog 可用的 html 代码. shell 脚本虽然不是非常复杂的程序, 但对于首次接触的我来讲, 多少还是有些忌惮. 不过, 接触任何新事物都需要勇敢面对, 逐步树立信心. 我是冲着把脚本写好去的, 所以, 我的目标是能够写出友好, 健壮, 优美的脚本..

OAuth学习笔记

- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare  . 发布时间:2011年08月29日,  已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.

Vim学习笔记

- 临池学书 - C++博客-首页原创精华区
最近在学习Vimtutor中的相关内容,Vim的使用博大精深,很多命令一旦不使用就会忘记,下面把其中的没有使用到的相关命令做一个简单的总结,供以后复习使用. 至于常见的保存,插入等等命令,则不予记录,在以后的使用中加深练习即可. To change until the end of a word, type  ce (ce + 修正的单词).

OAuth学习笔记

- jiaosq - 标点符
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据. 每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).

HTML学习笔记

- - CSDN博客推荐文章
超文本标记语言( 英文:HyperText Markup Language,HTML)是为“ 网页创建和其它可在 网页浏览器中看到的信息”设计的一种 标记语言. HTML被用来结构化信息——例如标题、段落和列表等等  点击打开链接. w3schools  点击打开链接 {语法大全,超赞.

jQuery学习笔记

- - ITeye博客
什么是jQuery,它能为我们做什么. jQuery是一个javascript类库或称之为javascript框架. 无需刷新页面从服务器获取信息. 简化常见的javascript任务. 为什么会如此流行或说得到大量用户群的支持:. 多重操作集于一行(避免使用临时变量或不必要的重复代码). jQuery利用了CSS选择符的能力,在DOM中快捷而轻松地获取元素或元素集合.