java—基础篇——继承
来源:互联网 发布:qq飞车淘宝商城 编辑:程序博客网 时间:2024/06/12 21:34
继承 简述二
一 继承的特点:
1. 提高了代码的复用性
2. 让类与类之间产生了关系
3. 必须是类与类之间有所属关系才可以继承
二 如何判断两个类之间是否具有所属关系呢?
例如:
class A { void demo1(){} void demo2(){} } class B extends A { void demo1(){} }
***对于这两个类来说,如果类B中不具有类A中的demo2方法,那么他们之间就没有所属关系,就不存在继承关系。
*** 先有父类, 后有子类 。
三 继承关系中 变量的调用:
1.java语言中,只支持单继承,不支持多继承,因为多继承容易带来安全隐患,当多个类中定义了相同的功能时,当功能内容不同时,子类对象不确定应该运行哪一个(java语言中支持多实现)。
例如:
首先定义两个类
<pre name="code" class="java">class A{void show() {System.out.println("java");}}class B {void show() {System.out.println("worke");}}
定义类C来继承A B
class C extends A,B{void show() {}}
建立测试类
class Test{public static void main(String[] args){C c = new C();c.show();// 此时子类对象不明确应该调用哪个类中的show方法}}
2.java语言中支持多层继承
例如:
class A{void show() {System.out.println("java");}}
class B extends A{void show() {System.out.println("worke");}}
class C extendsB{void show() {}}
3.变量访问
如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量时使用thiss ,要访问父类中的同名变量时 要使用super
例如:
class Fu{int number = 2;}
class Zi extends Fu{int number = 3;void show(){int number = 5;System.out.println(number); // 5System.out.println(this.number);// 3System.out.println(super.number);// 2}}
建立一个测试类
public class Test {public static void main(String[] args) { Zis z = new Zis(); z.show();}
输出结果为5,3,2
四 继承中函数的调用
1. 重写(覆盖)
当子类继承了父类,沿袭了父类的功能,到子类中,子类虽具备该功能,但是功能的内容却和父类不一样,这时,保留父类定义功能,重新定义内容;
例如:————————
class Fu{void show(){System.out.println("haha");}}
class Zi extends Fu{void show(){System.out.println("000");}}
这个Zi类中就覆写了父类Fu中的show方法
2.覆写的要求
<1>子类要覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败
<2> 静态类只能覆盖静态类
例如:————————
class Fu{int show(){return null;}}
class Zi extends Fu{void show(){System.out.println("000");}}
对于这个继承关系中,show方法没有被覆盖,也就是说类Zi中有两个show方法
例:————————
class Fu{private void show(){System.out.println("haha");}}
class Zi extends Fu{public void show(){System.out.println("000");}}
对于这个继承关系中,编译是可以通过的,因为子类的show方法权限(public)大于父类的show方法权限(private);
例:——————
class Fu{void show(){System.out.println("haha");}}
class Zi extends Fu{private void show(){System.out.println("000");}}
这种情况下的继承是不允许的,因为子类的show方法权限(private)小于父类中show方法的权限;
五 继承关系中的构造函数
在子类对类进行初始化时,父类构造函数也会运行,是因为子类的构造函数前有一条隐式的语句 super();
例如:——————
父类
class Fu{Fu(){System.out.println("Fu class method");}}
子类
class Zi extends Fu{Zi(){System.out.println("zi class method");}}
建立测试类
class Test{public static void main(String[] args) { Zi z = new Zi(); //输出结果将会是 Fu class method //Zi class method }}
上面的这个例子也就是说明子类对象实例化过程中,会先执行一遍父类跌构造函数,
例:——————
父类
class Fu{Fu(){System.out.println("Fu class method");}Fu(int i){System.out.println("Fu class method" + i);}}
子类
class Zi extends Fu{Zi(){// super____Fu()System.out.println("zi class method");}Zi(int i){// super____Fu()System.out.println("zi class method" + i);}}
建立测试
class Test{public static void main(String[] args) {Zi z = new Zi();Zi z = new Zi(4);// 输出结果将会是 Fu class method// Zi class method// Fu class method// Zi class method 4}}
例——————
class Person{private String name;private int age;Person(String name){this.name = name;}void show() {}}class Student extends Person{Student(String name){super(name);// 这里可以直接使用父类方法}void method(){super.show();}}
六 子类实例化过程
子类的所有构造函数,默认都会访问父类中的空参数的构造函数,因为子类的每一 个构造函数内的第一行都有一句隐式的super();
当父类中没有空参数的构造函数时,子类必须手动通过super 语句形式来指定要访问父类中的构造函数;
子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数,子类中至少有一个构造函数会访问父类空参数的构造函数
- Java基础—继承
- java—基础篇——继承
- Java基础——继承
- Java基础——继承
- Java基础——继承
- Java基础——继承
- java基础—继承连接
- JAVA基础——继承性
- Java基础——封装、继承、多态
- 黑马程序员——Java基础---继承
- JAVA基础 —— 继承、抽象、接口
- 黑马程序员——Java基础---继承
- 黑马程序员——Java基础--继承
- 黑马程序员——JAVA基础---继承
- 黑马程序员—Java基础—继承
- 程序员——java基础之继承
- java基础提高笔记——继承
- java基础(二)——继承
- 如何启用第三方Chrome插件
- Java基础知识之常用类库(1)
- apache poi操作office文档---- POI Word DOC格式转Html
- Unity3D入门——GUI之TextField和PasswordField控件
- javascript eq()用法
- java—基础篇——继承
- Java基础之String、StringBuffer、StringBuilder的区别
- 在XCode6.1如何新建一个空工程
- Tachyon高可用性集群模式的部署
- 【读书笔记】Linux高性能服务器编程(第一篇 第一章 1.2-1.6)
- hdu1796---How many integers can you find(容斥原理)
- 如果你胆敢import某个.m文件
- qt 登陆界面账号和密码的验证
- apache poi操作office文档----java在线预览txt、word、ppt、execel,pdf代码