Java——继承

  继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Java的继承具有单继承的特点,每个之类只有一个父类。

》继承的特点:

  Java的类继承通过 extends 关键字来实现,实现继承类的被称为之类,被继承的类被称为父类,有的称其为基类、超类。父类和子类的关系,是一种一般的特殊关系。例如现实当中儿子继承父亲的财产。

》父类
public class Father {

    public String name;

    public void show(){
        System.out.println("我是父亲,我叫"+this.name);
    }

}

 》子类

public class Son extends Father {

} 

》测试类

public class Test_extend {

    public static void main(String[] args) {

        Scanner input =new Scanner(System.in);
        Son son=new Son();

        son.name="小明";
        son.show();
    }

} 

结果:

    

 通过上面的例子可以看出子类继承父类的同时,将父类的变量和方法也同时继承了。

 如果定义一个Java类时并未显示指定这个类的直接父类,则这个类默认扩展 java.lang.Objec t类。因此,java.lang.Object 类是所有的父类,要么是其直接父类,要么是其间接父类。因此所有的 Java 的对象都可以调用 java.lang.Object 类所定义的实例。

  从之类角度来看,子类扩展(extends)了父类;但从父类的角度来看,父类派生(derive)出了子类。也就是说,扩展和派生所描述的是同一个动作,只是观察角度不同而已。



》重写父类的方法

》父类
public class Father {

    public String name;

    public void show(){
        System.out.println("我是父亲,我"+this.name);
    }

}
》子类
public class Son extends Father {

    public void show(){
        System.out.println("我是子亲,我叫"+this.name);
    }
}

  子类包含于父类同名的方法的现象被称为方法重写(Override),也被称为方法覆盖。可以说是子类重写了父类的方法,也可以说子类覆盖了父类的方法。

  方法的重写要遵循 “两同两小一大” 规则,“两同” 即方法名相同、形参列表相同;“两小” 指的是子类方法的返回值类型应比父类的返回值类型更小或相等,子类方法声明抛出的异常类比父类方法声明抛出的异常类更小或相等;“一大” 指的是子类方法的访问权限应比父类方法的访问权限更大或相等。

  当子类覆盖了父类方法后,子类的对象将无法调用父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法。如果需要在子类方法中调用覆盖的父类方法,则可以使用super(被覆盖的实例方法)或者父类类名(被覆盖的是类方法)作为调用者来调用父类中被覆盖的方法。

public class Son extends Father {

    @Override
    public void show() {
        super.show();    //调用父类方法
    }
}

  如果父类方法是被 private 修饰的,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是无法重写该方法。如果子类中定义了一个与父类 private 方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,依然不是重写,只是在子类重新定义了一个新的方法。

时间: 2024-11-05 16:07:31

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