`
JAVA那点事
  • 浏览: 17413 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类

JAVA类的继承学习笔记

阅读更多

JAVA类的继承学习笔记——稻草人

学习资料:《Java就业培训教程》

 

Java类继承的特点

1.Java只支持单继承,不允许多继承,一个子类只能有一个父类,不允许一个类直接继承多个类,但一个类可以被多个类继承,,即是类X不可以既继承类Y又继承类Z。

2.可以有多继承,如:类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A。

3.子类继承父类的所有成员变量和成员方法,但不继承父类的构造方法(构造方法是特殊的成员方法,他与类名相同,不返回结果也不加void返回值)。

4.在子类的构造方法中可以使用super()调用父类的构造方法,如下:

public class Student extends Person
{
	public Student(String name,int age,String school)
	{
		super(name,age);
		this.school = school;
	}
}

 

5.如果子类没有显式地调用父类构造方法,也没有使用this关键字调用重载的其他构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。也就是,在下面的例子中,写不写super()语句效果是一样的:

public class B extends A
{
	public B ()
	{
		super();//写不写,效果时一样的
	}
}

 

如果子类构造方法没有显式地调用父类构造方法,二父类中又没有无参数的构造方法(需要再次说明:如果父类没有显式地定义任何构造方法,系统将提供一个无参数的构造方法,相当于父类中又无参数的构造方法),则会编译出错。所以,通常情况下只要定义了有参数的构造方法,一般还要再定义一个无参数的构造方法。

/**
 * 测试类的继承特性
 * @author Administrator
 *
 */
class Person
{
	public String name;
	public int age;
	public Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public Person() {}//如果这个构造函数不写,则编译会出错
	public void getInfo()
	{
		System.out.println("name:"+name+" , age"+age);
	}
}
class Student extends Person{
	public void study()
	{
		System.out.println("好好学习,天天向上");
	}
	public static void main(String arg[])
	{
		Person p = new Person();
		p.name = "Person";
		p.age = 33;
		p.getInfo();
		
		Student s = new Student();
		s.name = "student";
		s.age = 10;
		s.getInfo();
		s.study();	
	}
}

 

子类对象实例化过程

1.分配成员变量的存储空间,并进行默认的初始化,就是用new关键字产生对象以后,对成员变量用相应的关系对对象中的成员变量进行初始化赋值。

2.绑定构造参数。

3.如果有this()调用,则调用相应的重载构造方法,(被调用的冲在构造方法又从步骤2开始执行这些流程),被调用的重载构造方法结束后回到当前的构造方法,然后直接跳到步骤6执行。

4.显式或隐式追溯调用父类的构造方法(一直到Object类为止,Object是所有Java类的最顶层父类),父类的构造方法又从步骤2开始对父类执行这些流程,父类构造方法执行结束后,回到当前的构造方法,当前构造方法继续往下执行。

5.进行实例变量的显式初始化,也就是执行在定义成员变量时就对其进行赋值的语句。String school = "NIT";

  6.执行当前构造方法的方法体里面的程序代码。

 

覆盖父类的方法

*覆盖的方法必须和被覆盖的方法具有相同的方法名称,参数列表和返回值类型。

 

*覆盖方法时,不能使用比父类中被覆盖的方法更加严格的访问权限。

分享到:
评论

相关推荐

    Java的继承的学习笔记

    java的继承的学习笔记

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    瑜琅java学习笔记

    1 java起源 2 java语言概述 3 简单(基本)数据类型 4 运算符:java有四大类运算符:算数运算、位运算、关系运算和逻辑运算 5 程序控制语句 6 介绍类:类是java的核心和本质 7 深入方法和类:方法重载、参数传递和递归...

    Java学习笔记

    Java学习笔记,java的继承、多态、抽象的具体介绍。以及在学习java基础过程中遇到的问题

    java学习笔记 继承 重载 覆盖

    java相关知识的学习笔记,个人整理,里面涵盖:继承,接口,重载,覆盖,final等等的知识点

    java学习笔记 初学者必读

    7.2.1. JAVA继承特点 7-16 7.2.2. 父类(SuperClass)和 子类(SubClass)的关系 7-17 7.2.3. 系统构造一个对象的顺序 7-17 7.3. 多态(polymorphism) 7-18 7.3.1. 方法的覆盖(overridding) 7-18 7.3.2. 多态的分类...

    java学习笔记

    关于java学习的随身笔记,java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言...

    Java web中servlet学习笔记 核心

    Java web中servlet学习笔记 核心。servlet执行过程、servlet生命周期、继承类、创建servlet、servlet线程安全、配置信息

    java学习笔记.rar

    Java基础部分笔记,封装多态继承模块类,异常和集合,IO类File类等学习笔记

    Java基础学习笔记(印象笔记)

    Java基础学习笔记(印象笔记) Java 是一种广泛使用的面向对象编程语言,最初由 Sun Microsystems(现为 Oracle Corporation)于1995年发布。它具有简单、易学、可移植、安全和高性能等特点。 Java 是一种跨平台语言...

    java学习笔记(下)

    java 学习笔记(下) 继承上面的java笔记

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁.docx Java在游戏服务器开发中的应用.docx java基础总结大全.txt Java开发与技术挑战——关于技术的技术思考.docx Java...

    java基础学习笔记 java整合技术 java工具类.rar

    简单性:相对于其他编程语言而言,java较为简单,例如:java不再支持多继承,C++是支持多继承的,多继承比较复杂,C++中有指针,java中屏蔽了指针的概念,避免了绝大部分的指针越界和内存泄露的问题,这里说明一下,...

    JAVA学习笔记.docx

    1. 开发环境Eclipse软件的下载与配置 2. JAVA的基础知识 3. JAVA面向对象编程 (1) 编写类的步骤 (2) 对象的创建及访问对象中的属性及方法 (3) 构造方法与重载 ...6. 继承、重写、多态等相关笔记

    java学习笔记(构造方法及继承)

    内容为本人在学习java构造方法及继承部分时整理的笔记,内容为构造方法及继承基础知识

    java学习笔记,涵盖知识点很全,很值得阅读。

    学习了这么久整理的java学习笔记与心得,内容很相信,值得阅读,java,学习笔记,eclipse,线程,继承

    JAVA语言学习笔记4-9

    JAVA语言学习笔记4-9 主要讲JAVA的OOP(面向对象) 封装 继承 多态 以及JAVA中的异常处理机制等

    java内部学习笔记.docx

    3.10继承 20 3.11 static 23 3.12 final 24 3.13多态 25 3.14抽象类 25 3.15接口 25 3.16内部类 26 3.17匿名类 27 3.18二维数组和对象数组 28 3.19其他注意事项 28 Java SE核心I 30 4.1 Object类 30 4.2 String类 31...

    java日常学习笔记第二篇.md

    java日常学习,关于继承和多态的知识点,还有一些抽象类abstract类和方法的使用,这些是我的个人笔记,在学习过程不懂得东西,也仅供大家参考。

Global site tag (gtag.js) - Google Analytics