继承关系与接口
来源:互联网 发布:linux下cat命令详解 编辑:程序博客网 时间:2024/05/17 03:14
以前自己了解过继承,对很多概念总是特别模糊,今天听了左哥的讲解后,清晰了很多,下面谈谈我的理解:
继承简单来说就是子类继承父类的东西,为什么要用继承,用继承有什么好处呢?假如一个类中有很多属性和方法,而此时另一个类中也需要该类中的很多属性和方法,如果重新写会因为代码较多觉得比较麻烦,这时就可以采用继承,继承的方式为:子类 extends 父类,这样子类就可以直接使用父类中的属性和方法了,但是要注意,子类通过继承关系只能获取父类的非私有权限的属性和方法。如果父类当中有抽象方法,则子类必须重写父类中的抽象方法,当普通类继承抽象类的时候,需要重写抽象类中的抽象方法,一个子类只能继承一个父类,这叫做单继承,而一个父类可以被多个子类继承,这很好理解,一个人只能有一个父亲,而一个父亲可以有多个孩子。
对于继承接口,我们用关键字implements,即:子类 implements 父类,由于接口里全是抽象方法,所以如果是普通类继承接口,则必须重写接口中的所有方法;如果是抽象类继承接口,则可以不用全部重写接口中的方法,因为抽象类中也可以存在抽象方法。一个类可以继承多个接口。
上面提到方法重写,那么为什么要重写呢?举个例子:当一个普通类从抽象类或者接口中继承时,当然会把他们中的抽象方法继承过来,而普通方法中不能有抽象方法,所以必须进行重写,将抽象方法重写成普通方法,重写时,子类的方法名、参数、返回值必须和父类继承过来的方法一致,不同的是自己添加方法体。
自动转型:即子类对象自动转为父类类型。
class A extends BB a = new A从上面的代码可知,A类继承了B类,实例化A 类的时候本应该是A a =new A ,而A是B的子类,故A 的对象a可以自动转型为父类B,所以就成了B a = new A。注意一点,转型后的对象,如果子类重写了父类方法,则执行的仍然是重写后的。
多态是一种现象:即同一个类型的对象,执行同一个方法,执行过程不一样。如下面的程序:
public class People {public void study(){System.out.println("人类在学习");}public void play(){System.out.println("人类在玩");}}
public class Student extends People{public void study() {System.out.println("学生在认真的学习");}}
public static void main(String[] args) {People peo = new Student();//自动转型Student stu = new Student();People peo1 = new People();peo.study();stu.study();peo1.study();}
学生在认真的学习
学生在认真的学习
人类在学习
上面代码中peo和peo1都是People类的对象,都是执行study()方法,最后的过程和结果却不一样,这就是多态现象。
构造函数: 形式为: 访问权限 类名(){} 构造函数的作用是用来构造对象,在创建对象的时候执行,并且具有返回值,返回的是对象在内存中的地址。
方法重载:方法重载需要满足以下条件:1.在一个类中 2.方法名相同 3.参数类型、参数个数、参数顺序不一样的方法互为重载方法。
满足上面条件的方法互为重载方法,当然,构造方法也可以重载:如果重载了构造函数,则类中默认的构造方法没有了,如果还需要用到无参的构造方法,则必须显
性定义在类中。
<span style="white-space:pre"></span>public void study(){System.out.println("学生在学习");}
public void study(int a){System.out.println("学生在学习2");}
public void study(int c,int d){<pre name="code" class="java"><span style="white-space:pre"></span>System.out.println("学生在学习3");}
public void study(String str){System.out.println("学生在学习4");}
public void study(int a,String b){<pre name="code" class="java"><span style="white-space:pre"></span>System.out.println("学生在学习5");}
public void study(String b,int a){<pre name="code" class="java"><span style="white-space:pre"></span>System.out.println("学生在学习5");}
由定义可知:同一个类中以上方法互为重载方法。
- 继承关系与接口
- Java继承关系与接口
- 抽象类,接口继承与实现关系
- java实现接口与继承的关系
- 继承、抽象类和接口的特点与关系
- 抽象类与接口之间的继承和实现关系
- Java 接口 实现和继承关系与区别
- 浅谈继承关系和接口
- 实体继承与关系
- 类继承与接口继承
- 接口继承与实现继承
- 接口继承与实现继承
- 接口继承与实现继承
- 接口继承与实现继承
- 接口继承与实现继承
- 接口继承与实现继承
- 继承与接口
- 接口与多重继承
- AJAX核心XMLHTTPRequest对象
- java内存分配
- Linux操作杂记
- 25个让Java程序员更高效的Eclipse插件
- linux find命令小结
- 继承关系与接口
- kuangbin带你飞 专题八 生成树
- 敏捷宣言
- UVA - 1382 Distant Galaxy
- 线段树多lazy-tag(两个)
- 基本数据结构之堆
- Volley框架下发送和读取Cookie
- Python读写文件
- 安卓前端如何与.net后端通信(一)