`
木有鸟的脚
  • 浏览: 5110 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

类与继承的总结

阅读更多

[size=large][size=medium]1.为什么需要使用继承?[/size][/size]

java是面向对象的编程语言,是类构成了java语言,而继承又是java必不可少的,继承就是当你写一个类时,虽然这个类满足了某些功能但是你又想拓展它的功能,此时你就可以使用继承机制在写一个该类的子类,来完成你需要的功能,一旦子类继承了父类就拥有了父类的方法与域(除私有方法和私有域),在子类中也可以重写父类的方法,覆盖父类中同名的方法,定义与父类相同的域,隐藏父类同名的域,实现子类需要的功能。继承的优点是提高搜索了代码的效率,避免了代码重写。


2.Java的关键字与格式

Java的关键字 extends
格式:
Public class xx(子类,派生类,超类) extends 类名(父类名,基类名){

}


注意: Java中的类的继承是单继承
场景: 冰箱类---->家用小冰箱类

This.color (属性)= color(参数);
//就近原则

3.子类继承到了父类的哪些方法和属性?

子类能集成到所有的父类的属性和方法。


能调用的属性和方法有哪些?

                 类中        同包中       有继承关系不同包中      不同包

Public        可以         可以           可以                  可以
Protected     可以         可以           可以                 不可以
默认的           可以         可以          不可以                不可以
Private       可以        不可以         不可以                不可以


构造方法;子类父类
Super( ,  ,  ,  , );



4.方法重写

方法重写:父类有此方法,子类也有此方法,但是他们的具体实现不同:
1. 访问修饰符,返回值类型,方法名,参数个数类型顺序都必须要相同;
2. 但是他们的具体实现(中间的代码)是不同的。

什么情况下用方法重写?   注意:Java中小数默认double类型,后加f表示float型

根据你实例化的对象来决定要调用的方法。




下面 是我的关于对象的继承的小练习--就是实现用冰箱类的对象来存放不同食物类对象的小程序。

在下面运用到了类的继承,包括(Freezing)方法的重写和Food类的自动转型。

自动转型:
        先有继承,才会有重写和自动转型,如电脑中short类型变为int类型,就是自动转型,但反过来则不行,必须得强制转型。继承以后,子类对象会自动转变为父类对象,如果子类重写了父类中的方法,调用的是子类的方法,否则就是父类中的方法。例如:
    Food meat1 = new Meat();
    此时,此时的meat1是Food类型的
  自动转型的好处:减少代码数量的编写;因为食物有很多种,如果每种食物都要为其写具体的实现方法的话会很繁琐(天知道事物要分为多少种),我们可以直接调用其父类实现方法,然后再新加的食物类的子类中再重写它的具体实现方法,可大大减少工作量,而且代码也会变得很简洁。


这些我们可以从Test类和下面的运行结果中看到:







/*
*冰箱类,包括家用小冰箱,冷库等各种冰箱。
*/

public class Icebox {
//属性
private int size; //大小
public String color;//颜色
protected float price;//价格

String brand;    //品牌
String type;     //类型

//构造方法
public Icebox(int size, String color, float price, String brand){
this.size = size;
this.color = color;
this.price = price;
this.brand = brand;
}

//属性设置和获取的方法
          //冰箱大小属性的设置和获取
public int getSize(){

return size;
}

public void setSize(int size){
this.size = size;
}

         //冰箱颜色属性的设置和获取
public String getColor(){

return color;
}

public void setColor(String color){
this.color = color;
}

         //冰箱价格属性的设置和获取
public float getPrice(){

return price;
}

public void setPrice(float price){
this.price = price;
}

//冰箱品牌属性的设置和获取
    public String getBrand(){

return brand;
}

public void setBrand(String brand){
this.brand = brand;
}

//冰箱的使用方法
public void Freezing(Food food){

System.out.println("把"+food.getName()+"放  入"+brand+"内冷藏起来");
}
}


/*
*家用小冰箱 Xiaoicebox类,继承自Icebox类。
*/

public class Xiaoicebox extends Icebox {

public String type;
//private Object food;
//构造方法
public Xiaoicebox(int size,String color,float price,String brand){
super(size, color, price, brand);//调用父类的构造方法
}

    public String getType(){

return type;
}

public void setType(String type){
this.type = type;
}

//实例化一个Food对象
//Food food = new Food();

//重写父类的Freezing方法
public void Freezing(Food food){
System.out.println("把"+food.getName()+"放入小明家的"+brand+type+"冰箱内冷藏起来");
}
}



/*
*Food类,包括Meat,蔬菜,水果等各种食物。
*/
public class Food {


//属性
public String name;


public void setName(String name){
this.name = name;
}

public String getName(){

return name;
}

}


/*
*Meat类,继承自Food类,可以放在家用小冰箱里。
*/
//其属性和方法可以继承父类所有的属性和方法
public class Meat extends Food{

}


/*
*Test类,把食物类对象放进具体冰箱类对象中的实现类。
*/
public class Test{

public static void main(String[] args){

            //meat对象来自于子类Meat类    
   Meat meat = new Meat();
   meat.setName("肉松饼");

            //meat1对象来自于父类Food类,自动转型为Meat类   
   Food meat1 = new Meat();
   meat1.setName("蜜汁牛肉");

            //meat2对象来自于父类Food类   
   Food meat2 = new Food();
   meat2.setName("一盒酥");
  
            //meat3对象来自于父类Food类
   Food meat3 = new Food();
   meat3.setName("小苹果");
  
  
   //box对象来自于子类Xiaoicebox类
   Xiaoicebox box = new Xiaoicebox(1,"white",0.0f,"海尔");
   box.setType("初号神");   

   Icebox box1 = new Xiaoicebox(1,"white",0.0f,"海尔");
   Xiaoicebox box3 = (Xiaoicebox)box1;//将父类类型的对象强制转换成子类类型的对象
   box3.setType("二号");
  
            //box1对象来自于子类Icebox类
   Icebox box2 = new Icebox(1,"white",0.0f,"海尔");
   //box2.setType("三号");
   
            //分别将不同的食物存入不同的冰箱对象
   box.Freezing(meat2);
   box3.Freezing(meat1);
   box2.Freezing(meat);
   box.Freezing(meat3);
  
}
}





  • 大小: 4 KB
分享到:
评论

相关推荐

    继承与派生总结

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

    封装继承多态总结

    封装继承多态总结

    JAVA中的继承学习总结

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

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

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

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

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

    继承和抽象类的总结

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

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

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

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

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

    类的继承与代码的复用

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

    C++类总结多态继承

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

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

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

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

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

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

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

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

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

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

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

    Java设计一个银行帐户类(继承与多态)

    Java设计一个银行帐户类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额等帐户信息,成员方法包括存款、取款操作。

    java语言内部类总结

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

    php5 类与对象

    php5 类与对象 个人总结与简单的例子,类与对象1. PHP 类与对象 2. PHP 类的继承 extends 关键字 3. PHP 构造方法 __construct() 4. PHP 析构方法 __destruct() 5. PHP final 关键字 6. PHP 类的接口 interface...

    JavaScript类的继承操作实例总结

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

Global site tag (gtag.js) - Google Analytics