JAVA 继承

一、继承的基本语法:

在Java语言中,用extends关键字表示一个类继承了另一个类。

比如: 子类 extends 父类{

}

子类类到底继承了父类类的哪些东西呢?有 以下两种情况:

① 当子类类和父类类位于同一个包中:子类类继承父类类中public、Protected和默认访问级别的成员变量和成员方法

② 当子类类和父类类位于不同的包中:子类类继承父类类中public和protected访问级别的成员变量和成员方法

【在JAVA 中一个子类只能有一个直接的父类。】

所有的Java类都直接或间接地继承Java.lang.Object类。Object类是所有java类的祖先。

二、方法重载(OverLoad)

对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法

注:

重载方法必须满足以下条件:

① 方法名相同

② 方法的参数类型、个数、顺序至少有一项不相同

③ 方法的返回类型可以不相同

④ 方法的修饰符可以不相同

三、方法覆盖(Override)

覆盖方法必须满足多种约束:

① 子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致

② 子类方法不能缩小父类方法的访问权限

③ 子类方法不能抛出比父类方法更多的异常

④ 方法覆盖只存在于子类和父类之间,在同一个类中的方法只能被重载,不能被覆盖

⑤ 父类的静态方法不能被子类覆盖为非静态方法

⑥ 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法

⑦ 父类的非静态方法不能被子类覆盖为静态方法

⑧ 父类的私有方法不能被子类覆盖

⑨ 父类的抽象方法可以被子类通过两种途径覆盖:一是子类实现父类的抽象方法 二是子类重新声明父类的抽象方法

⑩ 父类的非抽象方法可以覆盖为抽象方法

四、方法覆盖与方法重载的异同

相同点:

要求方法相同

都可以用于抽象方法和非抽象方法之间

不同点:

方法覆盖要求参数签名必须一致,而方法重载反之

方法覆盖要求返回类型必须一致,而方法重载不做限制

方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法

方法覆盖对方法的访问权限和抛出的异常有特殊要求,而方法重载无限制

父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次

五、super关键字

super和this关键字都可以用来覆盖java语言的默认作用域,使被屏蔽的方法或变量为可见。

注:

在程序中,在以下情况会使用super关键字:

①在类的构造方法中,通过super语句调用这个类的父类的构造方法

②在子类中访问父类的被屏蔽的方法和属性

六、继承的利弊和使用原则

利弊:

继承关系最大的弱点:打破封装

七、比较组合与继承

时间: 2024-08-01 10:41:15

JAVA 继承的相关文章

java继承和多态

java方法直接调用原理推测 有错误还望指正 当直接调用某对象的某方法时  会更具该对象获取到类信息对象   在从类信息对象中找到该方法 没找到 获取父类信息对象继续查找 找到了执行  jdk距离实现是通过反射还是其它? 如果按以上原理    以下情况解释不通 创建一子类对象  赋值给一父类指针变量  通过父类指针变量掉run方法   run方法在父类或子类中为私有  这种情况调用的是父类的run方法 并非子类的run方法 反射jar包 package extend; import org.ju

Java继承,多态,组合应用

继承:  面向对象的三大特征之一:    是类和类之间的一种拓展关系,是一种从一般到特殊的关系;    格式: sub   extends Super,  我们把sub称为子类或者拓展类, 把super称为父类或者基类(超类)   泛化: 把子类中的共性抽取到父类的过程; 特化: 子类在父类的基础之上,拓展自己特有的状态和特征;    Object: 是所有类的直接父类后间接父类;      class  Student{} 等价于  class  Student extends Object{

Java继承

public class Employee { public static String superStr = "SUPERSTR"; public String test() { return "SUPERTEST"; } public String test2() { return "SUPERTEST2"; } } public class Manager extends Employee { public static void main

Java继承改进

一.java继承改进 首先,多继承的缺点: 1.继承多个父类,父类中方法名相同,产生歧义 2.父类中方法同名,子类未覆盖,也会歧义 所以,java改进,类只能单继承,接口可以多继承 接口中只有抽象方法和静态常量 1.抽象方法只能在实现接口类中实现,调用时调用实现类的方法 2.静态变量在编译期间将确定调用关系了,存在冲突也会在编译的时候提示错误 ,而且引用变量一般直接使用类名或接口名,避免产生歧义. 1.1继承的初始化 继承关系是传递的.如,类C继承类B,类B继承类A,则类C既有从类B继承下来的变

Core Java (十一) Java 继承,类,超类和子类

Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报  分类: java(58) 读书笔记(46)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 继承关系 两个类之间存在三种关系: 依赖,uses-a,如果一个类的方法操纵另一个对象,我们就说一个类依赖于另一个类. 聚合(关联),has-a,一个对象包含另外一个对象,聚合关系意味着类A的对象包含类B的对象

JAVA继承时构造函数的问题

今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了. 下面是我个人的总结: 先创建一个父类,里面有两个构造函数: public class Jisuan { protected int a=4; //构造函数1 Jisuan() { System.out.println("父类的无参数构造函数"); } //构造函数2 Jisuan(int a) { System.out.println("父类的有参数构造函数");

java继承会犯的小错误

注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 1 public class Father { 2 3 private void print() { 4 System.out.println("private print"); 5 } 6 7 public static void main(String[] args) { 8 Father father = new Son(); 9 father.print(); 10 }

java继承时候类的运行顺序问题

子类在继承父类后,创建子类对象会首先调用父类的构造函数,先运行父类的构造函数,然后再运行子类的构造函数,例如以下所看到的: class Father{ public Father(){ System.out.println("I am father"); } } public class Child extends Father{ public Child(){ System.out.println("I am child"); } public static vo

Java 继承中的构造方法

Java 继承中的构造方法 子类可以继承父类的构造方法,并遵循以下原则: 子类构造的构成中必须调用其基类的构造方法.    2.子类可以在自己的构造方法中使用super()调用基类的构造方法. 使用this()调用本类的另外的构造方法. 如果调用super(),必须写在子类构造方法的第一行. 3.如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参的构造方法.    4.如果子类的构造方法中既没有显示的调用基类的构造方法,而基类中又没有无参的构造方法,则编译会出错. 1 cla

Java继承篇总结

继承: 1)概念 把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容.这个关系叫继承. 1.1)定义类时,通过"继承"一个现有的类,子类可以具有父类中的所有属性和方法. 2)Java中如何表示继承呢?格式是什么呢? A:用关键字extends表示 B:格式: class 子类名 extends 父类名 {} 2.1)案例 public class Animal { String name; String color; p