我们都知道java的四大特性:抽象、继承、封装、多态;

那么关于继承有哪些特性呢?下面看具体实例:

(1)

public class Person {

public  int a=2;

public  void see(int a){

System.out.println(a);

}

}

public class Hello extends Person {

public int a = 3;

public void see(int s){

System.out.println("11");

}  public static void main(String[] args){

Person a1 = new Person();

System.out.println(a1.a);  //a1.a的值由声明类型决定,所以值是2

a1.see(1);  //调用的方法由引用对象的类型决定,这里对象是子类的对象,所以值是11,总结:属性绑定到类型,方法绑定到对象!

}

}

(1)继承成员变量

当子类继承某个类时,子类就可以使用这个类的成员变量,但不是完全继承这个类中所有的成员变量,具体原则如下:

<1>子类能够继承父类的public、protected、default 修饰成员变量,不能继承private修饰的成员变量

<2>对于子类可以继承父类的成员变量,如果子类出现了同名的成员变量,那么子类就会屏蔽掉父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字

(2)继承方法

当子类继承某个类时,子类就可以使用这个类的方法,但不是完全继承这个类中所有的方法,具体原则如下:

<1>子类能够继承父类的public、protected、default 修饰方法,不能继承private修饰的方法

<2>对于子类可以继承父类的方法,如果子类出现了同名的方法,那么子类就会屏覆盖父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字,子类重写的方法的修饰符权限要大于父类的方法访问权限

总结:
程序运行时(一个类中),会第一时间加载运行静态代码块,一旦创建对象,就会执行非静态代码块以及无参构造方法。 而在继承中,程序运行时 会先加载父类中静态代码块 然后加载本身静态代码块,一旦创建对象(运用子类构造方法创建),就会调用 父类非静态代码块,父类构造方法,然后就是本身 非静态代码块,本身构造方法。

抽象类和接口的区别:

抽象类只能被继承,而且只能被单继承,接口需要被实现,而且可以多实现

抽象类中可以有非抽象方法也可以没有抽象方法(抽象类中可以没有抽象方法,但是有抽象方法的类肯定是抽象类),接口中全部都是抽象方法

抽象类的成员修饰符可以自己定义,接口中不能是private

----

继承:在方法覆盖时注意2点:

1、覆盖的方法修饰符权限不能小于比父类的方法权限

2、方法必须是全部静态或全部非静态

多态的弊端:父类的引用指向子类的对象,虽然提高了扩展性,但是只能方法父类具有的方法,不可以访问子类特有的方法

多态在成员变量和成员方法中的体现:

成员变量看编译运行左边

成员函数看编译看左边 运行看右边--覆盖

静态成员函数编译运行看左边--静态方法不属于对象 属于类

--也就是说静态函数和成员变量,静态成员变量原理一样

java中类的继承的更多相关文章

  1. Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)

    (一)Java中的继承: 关于继承,在Java中类的继承只能是单继承,不像C+++那样灵活,可以多继承,多继承的后果就是各种关系乱套,就相当于一个孩子有2个母亲一样,社会关系的复杂,不利于程序后期的开 ...

  2. Java中类的继承深入剖析

    在Java开发中,我们常常用到继承这一概念,可以说继承是Java这类面向对象编程语言的基石.正是有了继承这个概念,使得我们可以创建分等级层次的类.今天小编就和大家一起来深入聊聊Java语言的继承. 在 ...

  3. java类的继承(基础)

    ---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1  java继承的 ...

  4. 简谈Java语言的继承

    Java语言的继承 这里简谈Java语言的三大特性之二——继承. Java语言的三大特性是循序渐进的.是有顺序性的,应该按照封装-->继承-->多态这样的顺序依次学习 继承的定义 百度百科 ...

  5. java中类的创建及初始化过程

    java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程.     首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...

  6. Java中类的加载、连接和初始化

    Java中类的加载.连接和初始化 类的加载.连接和初始化 先介绍一下JVM和类 JVM和类: 当我们调用Java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多 ...

  7. 【Java基础】继承的一些总结

    什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...

  8. Java 中类与类之间的关系

    在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系     继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在J ...

  9. java 中类的加载顺序(转)

    1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...

随机推荐

  1. loadrunner实现浮点型数据转换成字符串

    ftoa(float floatNum, char *convFloatString) { char new[10]; float number,dTemp,temp_val; int base, f ...

  2. LoadRunner检查点

    web_reg_find("Text=ABC", "SaveCount=abc_count", LAST);51Testing软件测试网V?2Rs.J Gmdw ...

  3. hdu1710 二叉树的遍历

    Problem Description 已知前序和中序 求后序 Input The input contains several test cases. The first line of each ...

  4. mongodb学习01介绍

    安装/运行 查看当前mongodb运行情况: pgrep mongo; 在当前路径下建立数据库: mkdir -p data/db 按照一个数据库路径运行mongod --dbpath ./data/ ...

  5. java 常见下载合集

    J2SE SDK (JDK): Windows: http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jdk-6u25-windows- ...

  6. nginx实现ssl反向代理实战

    登录认证account.free4lab.com需要提供ssl登录接口,ssl的原理看这篇博文,因为前面有反向代理nginx,所以这个需求就放在nginx实现了,否则可以放在web容器(jetty,t ...

  7. Codeforces 528D Fuzzy Search(FFT)

    题目 Source http://codeforces.com/problemset/problem/528/D Description Leonid works for a small and pr ...

  8. A hard puzzle

    A hard puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. 挂载磁盘linux

    1. 用mkfs命令在/dev/sdb上创建ext4文件系统 1.1 mkfs命令 在设备上创建文件系统 mkfs [options] device 参数 device 为要在其上面创建文件系统的设备 ...

  10. BZOJ 1001 题解

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 18876  Solved: 4649[Submit][ ...