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

时间: 2024-10-12 08:33:25

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

面向对象编程的四大特征之一(继承)

继承 (1).概念:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(Inheritance).已有的类被称为父类,而新类称为子类.父类也可以称为基类.超类,子类也可以称为派生类. 在java中,一个类使用关键字extends继承其它类.关键字extends出现在类声明时的类名后,extends后面跟着的是要继承的类的名称. 父类(Employee)[salary可分为拿不同薪资的员工]: public class Employee{ pub

JAVA面向对象编程三大特性------封装、继承、多态

一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系.系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互.也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象. 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以

面向对象编程的四大特征(封装、多态、抽象)

封装 (1).概念(实现代码的重用):封装是指类中的成员变量都是private,并提供public方法访问这些成员变量的技术.如果一个成员变量被声明为private,那么它就不能被其它类访问,从而隐藏了类中的成员变量.因此,封装也被称为数据隐藏. (2).访问修饰符:                             本类                  同包中不同类                  不同包               子类 public                

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

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

java面向对象编程(五)--四大特征之抽象、封装

1.抽象 我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版).这种研究问题的方法称为抽象. 2.封装 封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作. java中实现封装的方法: 案例:不能随便查看人的年龄,工资等隐私[Demo116.java] //封装案例[Demo116.java] public class Demo116{ public static

Java面向对象编程三大特征 - 封装

Java面向对象编程三大特征 - 封装 本文关键字:Java.面向对象.三大特征.封装封装是面向对象编程中的三大特征之一,在对封装性进行解释时我们有必要先了解一些面向对象的思想,以及相关的概念.当我们想要去描述一系列的关系时我们要用到的最基本结构就是类,其中存在着成员变量和方法,用于记录属性和表达行为,相关知识请进传送门:Java中的基本操作单元 - 类和对象. 一.名词解读 为了解释封装的概念和作用,需要先来了解一下几个相关的概念,这有助于我们接下来的理解. 1. 权限修饰符 当我们在一个类中

Java面向对象编程三大特征 - 多态

Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向子类对象的相关概念,对继承还没有完全明白的同学可进传送门: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{