java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖

一、继承

1.继承的概念

继承可以解决代码复用,让我们的编程更加靠近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类。语法如下:

class 子类 extends 父类

这样,子类就会自动拥有父类定义的某些属性和方法。另外,并不是父类的所有属性、方法都可以被子类继承。父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符属性和方法能够被子类继承,private修饰符的属性和方法不能被子类继承。

2.案例:

//功能:说明继承的重要性
package com.davperson;//包名
public class Demo117 {
    public static void main(String[] args) {
        Pupil p1=new Pupil();
        p1.printName();
    }
}

//将学生的共有属性提取,做一个父类
class Stu{
    //定义成员属性
    protected int age;
    public String name;
    public float fee;
    private String job;//私有将不被继承

    //编程中,如果你不希望子类继承某个属性或方法
    //则将其声明为private即可
    public void printName(){
        System.out.println("名字"+this.name);
    }
}

//小学生类
class Pupil extends Stu{
    //交学费
    public void pay(float fee){
        this.fee=fee;
    }
}
//幼儿
class Pre extends Pupil{
    //交学费
    public void pay(float fee){
        this.fee=fee*1.5f;
    }
}
//中学生类
class MiddleStu extends Stu{
    //交学费
    public void pay(float fee){
        this.fee=fee*0.8f;
    }
}
//大学生类
class ColStu extends Stu{
    //交学费
    public void pay(float fee){
        this.fee=fee*0.1f;
    }
}

3.继承--注意事项

1、子类最多只能继承一个父类(指直接继承)

2、java所有类都是Object类的子类 (所有的子类都可以逐级继承,例:爷->父->子->孙)

3、JDK6中有202个包3777个类、接口、异常、枚举、注释和错误

4、在做开发的时候,强烈建议大家多查jdk帮助文档

5、在使用类时,实在不知道怎么办,多使用搜索引擎

至此,关于类的定义又可以跟进一步得到完善:

package 包名;
class 类名 extends 父类{
    成员变量;
    构造方法;
    成员方法;
}

二、方法重载和方法覆盖

在讲解多态前,必须讲解方法重载(overload)和方法覆盖(override)。

1.方法重载(overload)

简单的说:方法重载就是在类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

案例:

/*
  方法重载(overload)getMax
  写一个类(Abc),编写方法可以接收两个整数,返回两个数中较大的数[Demo119.java]
*/
public class Demo119{
    public static void main(String []args){
        Abc2 abc1=new Abc2();
        System.out.println(abc1.getMax(12,14));
        System.out.println(abc1.getMax(24f,20f));
    }
}

class Abc{
    //返回较大的整数
    public int getMax(int i,int j){
        if(i>j){
            return i;
        }else{
            return j;
         }
    }

                //返回较大的float类型数
    public float getMax(float a,float b){
        if(a>b){
            return a;
        }else{
            return b;
         }
    }

关于方法重载的更多说明:

1、方法名相同

2、方法的参数类型,个数,顺序至少有一项不同

3、方法返回类型可以不同(只是返回类型不一样,不能构成重载)

4、方法的修饰符可以不同(只是控制访问修饰符不同,不能构成重载)

2.方法覆盖(override)

方法覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法。如下例Cat类中的cry方法就覆盖了Animal类的cry方法。

//子类方法覆盖父类方法[Demo120.java]
public class Demo120{
    public static void main(String []args){
        //创建一只猫
        Cat cat1=new Cat();
            cat1.cry();
        Dog dog1=new Dog();
            dog1.cry();
    }
}
//动物类
class Animal{
    int age;
    String name;
    //都会叫
    public void cry(){
        System.out.println("我是动物,不知道怎么叫");
    }

}
//猫猫类
class Cat extends Animal{
    //覆盖父类方法
    public void cry(){
        System.out.println("猫猫叫!");
    }
}
//狗狗类
class Dog extends Animal{
    //覆盖父类方法
    public void cry(){
        System.out.println("汪汪叫!");
    }
}

关于方法覆盖的更多说明:

方法覆盖有两点一定要注意:

1、子类的方法的返回类型,参数,方法名称,要和父类的返回类型,参数,方法名称完全一样,否则编译出错。

2、子类方法不能缩小父类方法的访问权限。

java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖,布布扣,bubuko.com

时间: 08-10

java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖的相关文章

java面向对象编程(七)--四大特征之多态

1.多态概念 多态性是对象多种表现形式的体现.比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴等等.那么我到宠物店说"请给我一只宠物",服务员给我小猫.小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性. java中的多态,就是指一个引用(类型)在不同情况下的多种状态.也可以理解成,多态是指通过指向父类的指针,来调用在不同子类中实现的方法.也可以理解为"一个接口,多个方法". 实现多态有两种

JAVA学习(五):Java面向对象编程基础

Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目的. 1.OOP的3个特性(封装.继承和多态性) 封装是类的基础.指把类的相关实现细节隐藏起来,在类中将数据和实现操作的代码集中起来放在对象的内部.调用这些类时仅仅需直接使用类预留的接口就能够了. 继承提供了子类自己主动拥有父类数据结构和方法的机制.它表示类之间的一种关系. 多态指使一个对象被看成还

java面向对象编程知识点总结

一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类型. 常用成员有四种:类字段.类方法.实例字段.实力方法. 其它引用类型还包括数组.接口.枚举和注解. 2)字段和方法 示例:一个简单的类和成员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class Circle{

黑马程序员-Java面向对象编程学习总结

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java面向对象编程学习总结: 重要知识点总结如下: 1,抽象,封装,继承,多态是面向对象程序设计中得四个特点. 2,面向对象得软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现. 可概括为如下过程:分析用户需求,从问题中抽

黑马程序猿——JAVA面向对象的特性:封装,继承,多态

                                       - ----------android培训.java培训.java学习型技术博客.期待与您交流!------------  一.java面向对象的特性.封装.继承.多态         封装 封装是对象和类概念的主要特性. 封装.也就是把客观事物封装成抽象的类.而且类能够把自己的数据和方法仅仅让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承

《Java面向对象编程第二版》今年出版以来获得读者一致好评。

<Java面向对象编程第一版>自2016年出版以来,承蒙读者们的厚爱,至今已经重印了二十多次,成为国内Java领域里的经典Java技术宝典.在当当网上获得了1500多条好评: http://product.dangdang.com/9186890.html?point=comment_point 应广大读者的要求,为第一版进行了升级,第二版融合了最新的Java8的语言特性,它继续为Java开发人员们提供丰富全面的技术支持和帮助.在京东网上读者们对第二版的好评如潮,一致认为这是Java开发人员必

Java面向对象编程思想

面向对象三个特征:封装.继承.多态封装:    语法:属性私有化(private).提供相对应的get/set 的方法进行访问(public). 在set/get的方法中对属性的数据 做相对应的业务逻辑的判断    思想:封装外面的程序不能直接访问本类的属性,需要通过本类提供的方法间 接访问本类的属性,从而提高代码的安全性.    涉及到的其他的知识点:    构造方法:用来描述对象创建过程,可以通过构造方法快速创建对象.    this关键字:代表本类对象,调用本类的属性.方法.构造方法.  

Java面向对象编程(一)

由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymorphism)和封装性(encapsulation). 一. 继承性 [类修饰词列表] class 类名 [extends 父类名] [implements 借口列表名] { 类体 } class Employee { public int workYear; public Employee() {

《Java面向对象编程第二版》即将出版

<Java面向对象编程第一版>自2016年出版以来,承蒙读者们的厚爱,至今已经重印了二十多次,成为国内Java领域里的经典Java技术宝典.应广大读者的要求,在过去的几个月,为第一版进行了升级,第二版融合了最新的Java8的语言特性,希望它能继续为Java开发人员们提供丰富全面的技术支持和帮助. 本书技术支持网址为:www.javathinker.net