java中类的继承
我们都知道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中类的继承的更多相关文章
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
(一)Java中的继承: 关于继承,在Java中类的继承只能是单继承,不像C+++那样灵活,可以多继承,多继承的后果就是各种关系乱套,就相当于一个孩子有2个母亲一样,社会关系的复杂,不利于程序后期的开 ...
- Java中类的继承深入剖析
在Java开发中,我们常常用到继承这一概念,可以说继承是Java这类面向对象编程语言的基石.正是有了继承这个概念,使得我们可以创建分等级层次的类.今天小编就和大家一起来深入聊聊Java语言的继承. 在 ...
- java类的继承(基础)
---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1 java继承的 ...
- 简谈Java语言的继承
Java语言的继承 这里简谈Java语言的三大特性之二——继承. Java语言的三大特性是循序渐进的.是有顺序性的,应该按照封装-->继承-->多态这样的顺序依次学习 继承的定义 百度百科 ...
- java中类的创建及初始化过程
java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程. 首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...
- Java中类的加载、连接和初始化
Java中类的加载.连接和初始化 类的加载.连接和初始化 先介绍一下JVM和类 JVM和类: 当我们调用Java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多 ...
- 【Java基础】继承的一些总结
什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...
- Java 中类与类之间的关系
在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在J ...
- java 中类的加载顺序(转)
1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...
随机推荐
- 类中用const限定的成员函数
本文转自http://blog.csdn.net/whyglinux/article/details/602329 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非 ...
- hdu 2669 Romantic
Romantic Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- hdu2859 dp
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2859 题意:输入一个数n,接下来是一个由n*n个字母组成的矩阵,求以左下到右上的线为轴的最 ...
- 移动网站中,用canvas,svg比用图片好?
1.Svg可以单独作为文件打开,在AI里做矢量图形,保存图层路径,即可另存为Svg文件. (1) Path语法:命令+参数.大写字母表示坐标参数为绝对位置,小写字母表示坐标参数为相对位置(即上次画笔结 ...
- server返回arraylist时,juqery在客户端的处理
首先,要添加命名控件如下: using System.Web.Services; server端的方法 [WebMethod()] public static ArrayList GetAuthB ...
- Python学习笔记02
元组:圆括号的,不能进行赋值操作,即不可更改. 列表:方括号的,可以修改. 访问:均使用下标访问 # 元组是一个静态列表,初始化之后就不可以修改,可以试任意类型 tuple1 = ('a st ...
- POJ3308 Paratroopers(最小割/二分图最小点权覆盖)
把入侵者看作边,每一行每一列都是点,选取某一行某一列都有费用,这样问题就是选总权最小的点集覆盖所有边,就是最小点权覆盖. 此外,题目的总花费是所有费用的乘积,这时有个技巧,就是取对数,把乘法变为加法运 ...
- 多表头固定demo--html Table
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 微信客户端自带的Js Api:WeixinJSBridge
<!DOCTYPE html> <html> <head> <title>微信WeixinJSBridge API</title> < ...
- Python for Informatics 第11章 正则表达式三(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.2 用正则表达式抽取数据 ...