栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-面向对象三大特性之继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-面向对象三大特性之继承

今天学习—继承。

为了便于理解,文章最后还是会放案例讲解,下面一起来学习吧~

文章目录
  • 一、继承的介绍
    • 1、什么是继承
    • 2、继承的作用
    • 3、继承的语法
  • 二、子类如何使用父类的属性和方法
  • 三、父类能否使用子类的属性和方法
  • 四、子类和父类中有同名的方法或者变量怎么办
  • 五、使用继承后方法的运行顺序
  • 六、对比:方法重写与方法重载
  • 七、代码案例
    • 1、题目
    • 2、部分知识讲解

一、继承的介绍 1、什么是继承

  继承就是指一个子类继承了父类的所有成员,并且能够访问并使用父类中非私有的属性和方法。
  
  假设:儿子继承父亲给予的房子和车子,这就是继承
  

2、继承的作用

  使用继承能够减少代码的冗余。
 
  假设:在多个类中存在相同属性和行为时,我们可以将这些内容抽取到单独的一个类中,那么,其他类无须在定义这些属性和行为,只要继承这个类即可
  

3、继承的语法

  继承通过关键字 extends来实现
  具体语法:

public class Father{}
public class Son extends Father{}  //子类继承父类

  

二、子类如何使用父类的属性和方法

  值得一提的是,子类能够直接使用父类的属性和方法,无须再通过其他的形式即可完成调用
  例如:
  Father类中有方法 eat();
  Son类中可以直接调用Father类的eat();
  

三、父类能否使用子类的属性和方法

  对于这一点,切记:子类能够调用父类的属性和方法,但是父类不能够调用子类的属性和方法,这一点容易混淆,在后续编程的过程中需要额外的注意。
  

四、子类和父类中有同名的方法或者变量怎么办

  在第三点中讲过,子类能够直接用父类的方法,但是为了区别父类和子类,不管父类和子类有没有重名,建议每次在子类调用父类方法的时候都加入super关键字
 
  例如:Father类中方法为 eat(); Son类使用super.eat()调用父类的方法(如果不懂,可以看看第七点的例题)
  

五、使用继承后方法的运行顺序

  顺序:父类构造方法----->子类构造方法----->子类普通方法----->父类普通方法
  代码举例:

public class Father{
   public Father(){
   }
   public void FatherShow(){
	}
}
public class Son extends Father{
	public Son(){
	}
	public void SonShow(){
		// 调用父类
		FatherShow();
	}
}
public class test{
	public static void main(String[] args){
		Son son = new Son();
		son.SonShow();
	}
}
根据test类分析得出
顺序:父类构造方法(Father)---->  子类构造方法(Son)-----> 子类普通函数(SonShow)---->父类普通函数(FatherShow)

  总结:
  构造方法:父类比子类先执行
  普通方法:谁先调用谁先执行
  

六、对比:方法重写与方法重载

  方法重写:
  
  简介:子类继承了父类的方法或者属性,子类再对其方法或者属性重新编写
  
  详细介绍:当父类继承下来的方法不满足子类需要的时候,可以写一个和父类声明一样的方法,方法体中逻辑重新实现,这个子类重新定义的方法就是重写后的方法。重写后的方法会覆盖父类的功能,因此称为方法重写,方法的覆盖。
  
  简单比喻:Son从Father中拿到一张Father写了一些字的纸,Son可以对该纸进行修改,可以擦掉重写也可以在后面接着写。
  
  方法重载:
  条件:在同一个类中,方法名相同,参数列表不同,跟返回值没有关系
  简单比喻:

public void area(){
        System.out.println("计算面积");
    }
    public void area(int r){
        // 圆的面积
        double cicle = r*r*3.14;
    }
    public void area(int length,int width){
        // 长方形的面积
        int size = length*width;
    }
七、代码案例 1、题目

定义数组存储3部手机对象手机的属性:品牌,价格,颜色。要求:计算出三部手机的平均价格

  

2、部分知识讲解

  封装的类:test5_phone
  测试的类: test5
  
  ①、这里需要将三个相同类型test5_phone的对象放入一个数组中,数组的类型跟对象类型一致
  ②、通过for循环创建对应的对象,然后给对象中的属性赋值。
  ③、通过给调用构造函数将参数赋值给类test5_phone的成员变量
  ④、将手机的价格相加然后除以数组的长度得到平均值avg

  代码演示:

// test5_phone 类
public class test5_phone {

//    todo 定义数组存储3部手机对象手机的属性:品牌,价格,颜色。要求:计算出三部手机的平均价格
    String brand;
    int price;
    String color;

    public test5_phone(String brand, int price, String color) {
        this.brand = brand;
        this.price = price;
        this.color = color;
    }

    public test5_phone() {
    }


}

//  test5 测试类
import java.util.Scanner;

public class test5 {

    public static void main(String[] args) {
        test5_phone arr[] = new test5_phone[3];
        Scanner input = new Scanner(System.in);
        int sum =0;
        int avg = 0;
        for (int i = 0; i < arr.length; i++) {
            String brand;
            int price;
            String color;

            System.out.println("请输入第"+(i+1)+"手机的品牌");
            brand = input.next();
            System.out.println("请输入第"+(i+1)+"手机的价格");
            price = input.nextInt();
            System.out.println("请输入第"+(i+1)+"手机的颜色");
            color = input.next();

            arr[i] = new test5_phone(brand,price,color);

            sum += arr[i].price;
        }
        avg = sum / arr.length;
        System.out.println("三部手机的平均价格是"+avg);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号