`
打酱油的小瓶子
  • 浏览: 8107 次
最近访客 更多访客>>
lso
社区版块
存档分类

类的继承总结

    博客分类:
  • java
阅读更多

        java的基本单位是类,而类与类之间又存在着什么联系呢?通过这节课我们对于类有了更为深刻的了解。类和类之间可以存在继承关系。由一个类派生出来的另一个类称为子类(也可以叫超类,或者派生类),将派生出子类的类称为父类(或者说基类)。继承的好处:提高代码的重用性;提高程序的扩展性。

       类的继承的关键字是:extends,格式为:public class 类名b(子类)extends 类名a(父类){ }

注意:java中只存在单继承关系,每一个类都是至多只能有一个父类

       既然子类和父类之间存在着继承关系,那么子类到底继承到了父类的那些属性和方法呢?答案是全部,子类继承了父类的全部属性和方法。值得注意的是:子类继承的方法和属性和子类能调用的父类属性和方法是不一样的。这是容易被我们所忽略的事,我们很容易将继承的方法和属性与可以调用的方法和属性弄混淆。

       类中的访问修饰符有四种:private、默认的、protected、public。这四种访问修饰符的作用区域不同,局限性由高到低。

       关于存在继承关系的类中能调用的属性和方法有不同的情况:

       1.子类和父类同一个包下:默认的,protected,public属性和方法能被子类的对象以及在子类中调用。

       2.子类和父类不在同一个包下时:

       1)创建的对象不在子类或者父类中时(即在第三方类),可调用的属性和方法就只有public。

       2)如果在子类的{}中,可调用的属性和方法有public和protected的。

       类中方法的重写:

       我们生活中方法的重写也很常见:司机都有开车这个方法,司机作为父类,公交车司机作为子类,两个司机类在开车这个方法里实现的路径不一样,但是它们的参数类型个数顺序等等是一样的。

      要实现方法代码重写的条件有三个:

      (1)是必须存在继承关系;

      (2)是方法的返回值数据类型,方法名,参数类型,参数名,参数个数,参数顺序必须完全一致。

      (3)是子类在重写方法时,访问修饰符的范围可以大于或者等于父类方法的访问修饰符。

       当实现方法重写后,如果你创建的对象是子类的对象,那么会优先调用子类的方法,如果子类没有该方法,才会执行父类中定义的方法。

       自动转型:要有自动转型也必须要有继承关系,其格式为:1)、父类  对象名;
对象名 = new 子类名(实参,...);2)、父类  对象名  = new 子类名(实参,...);

       自动转型的缺点:调用子类中有而父类中没有的方法则会报错,主要是由于Java的编译机制引起的问题,Java在编译的时候只会根据对象名的类型进行编译,而不会去看new后面的内容,根据对象名的类型去查找是否存在该方法,如果存在,则通过编译,如果不存在则报错。

       其优点:实现多态,减少重复的代码。所谓多态就是由方法重载,继承,方法重写,自动转型等技术点的组合。

        关于自动转型的实例:克里斯有很多种类型的笔,克里斯要写字,可以用铅笔也可以用毛笔,也可以用钢笔……

 

练习:

package 自动转型;
//创建一个Pen类
public class Pen {
	//程序入口
	public String name;//设置姓名属性
	
	//定义设置姓名属性的方法
	public void setName(String name){
		this.name = name;//将传入的参数值赋给调用该构造方法的对象姓名属性
	}
	//定义获取姓名属性的方法
	public String getName(){
		return name;//返回姓名属性
	}
}

 

package 自动转型;

/**
 * 定义一个子类Pencil
 **/
public class Pencil extends Pen{
	//定义一个带参构造方法
	public Pencil (String name){
		//将传入的参数值赋给调用该构造方法的对象姓名属性
		this.name = name;
	}
	
}

 

package 自动转型;
/**
 * 定义一个Brushpen类
 **/
public class Brushpen extends Pen{
	//定义一个带参构造方法
	public Brushpen (String name){
		//将传入的参数值赋给调用该构造方法的对象姓名属性
		this.name = name;
	}
}

 

package 自动转型;
/**
 *定义一个User类
 */
public class User {
	protected String name;//设置姓名属性
	//定义一个带参的构造函数
	public User(String name){
		this.name = name;//将传入的参数值赋给调用该构造方法的对象姓名属性
	}
	//设置一个获取姓名属性的方法
	public String getName(){
		return name;
	}
	//定义一个写字的方法,使用自动转型来接受参数
	public void write(Pen pen){
		System.out.println(this.getName()+"正在用: "+pen.getName()+"写字");
	} 
}

 

package 自动转型;
/**
 * 定义一个Main类
 */
public class Main {

	/**
	 * 程序的主函数入口
	 */
	public static void main(String[] args) {
		//创建一个Pen类对象
		Pen pen = new Pen();
		//用实例化以后得到的pen对象去调用Pen类中设置姓名属性的方法
		pen.setName("笔");
		
		//创建一个Pencil类对象
		Pencil pencil = new Pencil("铅笔");
	
		//创建一个Brushpen对象
		Brushpen brush = new Brushpen("毛笔");
		
		//创建一个User对象
		User user = new User("克里斯");
		//调用write方法
		user.write(pen);
		user.write(pencil);
		user.write(brush);
		
	}

}

 

 

分享到:
评论

相关推荐

    封装继承多态总结

    封装继承多态总结

    JAVA中的继承学习总结

    JAVA中的继承学习总结JAVA中的继承学习总结

    继承和抽象类的总结

    这个文档总结概括了继承和抽象类的相关知识以及需要注意的事项

    继承与派生总结

    c++继承与派生总结 面向对象的程序设计中提供了类的继承机制,允许...以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也就是说从原有类派生了新类。 类的派生机制的好处在于:代码的重用和可扩充性。

    Java实验报告——类的继承、多态的应用

    1、实验名称:类的继承、多态的应用 2、代码内容:学生管理类 3、【实验目的】 (1)进一步熟悉抽象类和抽象方法的定义 (2) 进一步掌握集成和多态的实现方式。

    Java继承_抽象类与接口的应用.

    1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结

    C++类总结多态继承

    C++中类的总结,适合毕业找工作,或新手突击C++用

    Java方法继承、方法重载、方法覆盖总结

    Java方法继承、方法重载、方法覆盖总结。比较具体细致地描述他们之间的连系与区别,需要的同学可以看看。

    关于类与继承和相关基础东西总结

    NULL 博文链接:https://java--hhf.iteye.com/blog/1699633

    MinGW如何存储对象、如何实现类继承、 多态.pptx

    通过代码举例总结的的方式,对c++的类对象在MinGW编译器中存储的机制,以及继承、多态等c++特性的实现机制。

    类的继承与代码的复用

    {实验报告需单独下载,不过源代码里有注释} ...总结:先建立一个抽象类shape,然后建立一个核心类求体积(面积*高),再建立各种实例图形(对抽象类的继承),直接可输出图形体积,即实现了代码的复用。

    《java面向对象程序设计-继承和多态》教案.doc

    } 创建接口的步骤 2-2 接口使用示例 总结 封装、继承和多态是面向对象的主要特征 继承可提高代码的重用性,使用extends关键字来实现。除了构造方法之外,父类的所有 方法和属性都被子类的对象继承 多态性是不同的...

    java语言内部类总结

    定义在一个类内部的类叫内部类,包含内部类的类...内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。

    【JavaScript源代码】深入JS继承.docx

     目录 前言准备总结继承的n种方式原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合式继承结束语 前言 准备 总结 继承的n种方式 原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合...

    C++程序设计,主要为C++语言简介、面向对象的基本概念、类和对象进阶、运算符重载、类的继承与派生、多态与虚函数等章节总结

    内容主要为:C++语言简介、面向对象的基本概念、类和对象进阶、运算符重载、类的继承与派生、多态与虚函数、输入/输出流、文件操作、函数模板与类模板九个章节的相关知识点总结,其中包括知识点介绍,知识点分析,...

    在JavaScript中模拟类(class)及类的继承关系

    今天我主要谈谈Javascipt中模拟“类”的方法及js中继承的总结和回顾。 js中实现“类”与继承,既是重点,又是难点。很多同学可能都对js中“类”与继承都有所了解,但是深入剖析的时候,感觉力不从心、模棱两可。 ...

    JavaScript类的继承操作实例总结

    本文实例总结了JavaScript类的继承操作。分享给大家供大家参考,具体如下: 一、类式继承 首先要做的是创建构造函数。按惯例,其名称就是类名,首字母应该大写。在构造函数中,创建实例属性要用关键字this 。类的...

    Ruby类继承、抽象类、类拓展混入、代理类实例

    1、类继承: 当多个类公用很多方法的时候可以将公用方法部分抽取出来,需要的类做相关继承。 例子: 代码如下: class A ”it was a “ C.new.a #=>”it was a “ 2、抽象类 当多个类要继承一个类时,用第一种方法...

Global site tag (gtag.js) - Google Analytics