Java 继承

来源:互联网 发布:java 泛型编程 pdf 编辑:程序博客网 时间:2024/06/11 02:47

继承是现实生活中对“分类”概念的一个模拟

继承关系的重要特性:举个栗子,一只cat拥有animal的一切特性但有其各自的特点。即IS_A关系

子类自动拥有分类中声明为public和protected的成员

class 子类名 extends 父类名{....}父类 parent class超类 super class//通常指直接上级  基类 base class//通常指包括直接上级在内的上级的上级

继承条件下类的访问权限 :
 public:外界可自由访问 
     private:外界不可访问 
     protected:同一包中的子类都可以访问,另一包 中的子类(派生于同一个父类)也可以访问 
     default:如果不指明任何权限,则默认同一包中 的类可以访问


通过 super 调用基类构造方法,必 须是子类构造方法中的第一个语句:

class Grandparent {    public Grandparent() {        System.out.println("GrandParent Created.");    }    public Grandparent(String string) {        System.out.println("GrandParent Created.String:" + string);    }}class Parent extends Grandparent {    public Parent() {        System.out.println("Parent Created");    }    public Parent(String string) {    super("GrandParent");        System.out.println("Parent Created.String:" + string);    }}class Child extends Parent {    public Child() {    super("Parent");        System.out.println("Child Created");    }}public class HelloJava {    public static void main(String args[]) {        Child c = new Child();    }}

输出结果:

GrandParent Created.String:GrandParent
Parent Created.String:Parent
Child Created

不允许继承类:

final class 类名{}

子类与父类关系:

1.Extends: 子类定义的方法父类没有同名

2.Override: 子类父类定义了完全一样的方法(要求方法一毛一样,不然就是方法重载,那么子类调用父类被覆盖的方法可以用super关键字)

3.Overloads: 子类与父类有同名方法,但两者参数输入不同


顶层基类Object,所以的类都派生自Object。

Object.toString()方法默认返回“类名 @ hashCode” 为使返回有意义,子类可重写toString()方法。


Java方法覆盖”的语法规则
(1)覆盖方法的允许访问范围不能小于原方法。 (2)覆盖方法所抛出的异常不能比原方法更多。 (3)声明为final方法不允许覆盖。  例如,Object的getClass()方法不能覆盖。 (4)不能覆盖静态方法 

参考:金旭亮Java编程系列(2014版)




原创粉丝点击