zoukankan      html  css  js  c++  java
  • day11_extends_Override

    • 面向对象的三大特征---继承

    继承

    继承后的特点---成员方法

    成员方法不重名

    ​ 如果子类和父类中出现不重名的方法,这时的调用是没有【任何影响的】,对象调用方法时,会先在子类中有没有对应的方法,若子类中存在该方法,那么就执行该方法,若子类当中不存在该方法,那么会执行父类当中的成员方法

    public class Fu{
        int num;
    	public void show(){
            System.out.println("Fu类中的show方法在执行!");
            System.out.println("Fu类中的成员变量num:"+num);
        }
    }
    public class Zi extends Fu{
        int num;
        public void show2(){
            System.out.println("Zi类中的show方法在执行!");
            System.out.println("Zi类中的成员变量num:"+num);
        }
    }
    

    成员方法重名---重写(Override)

    ​ 如果父子类中出现同名的成员方法,这时的访问是一种特殊情况,叫做方法重写(Override)

    ​ 方法重写:子类中出现与父类一模一样的方法时(返回值、方法名、参数列表),会出现覆盖效果。也称为重写、复写,简称 “ 声明不变 重新实现 ”

    public class Fu{
        int num = 10;
    	public void show(){
            System.out.println("Fu类中的show方法在执行!");
            System.out.println("Fu类中的成员变量num:"+num);
        }
    }
    public class Zi extends Fu{
        int num = 20;
        public void show(){
            System.out.println("Zi类中的show方法在执行!");
            System.out.println("Zi类中的成员变量num:"+num);
        }
    }
    

    重写的应用

    子类可以根据需要,定义特定于自己的行为,既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行功能拓展

    设计原则:对于已经投入使用的类,尽量不要修改,推荐定义一个新的类,通过继承,来重复利用共性的内容,并且还可以添加新的内容

    public class Phone{
        //打电话功能
    	public void call(){
            System.out.println("打电话");
    	}
        //发短信功能
        public void sendMessage(){
            System.out.println("发短信");
    	}
        //来电显示功能
        public void show(){
            System.out.println("来电显示");
    	}
    }I
    public class Iphone12 extends Phone{
        //重写父类来电显示功能
        public void show(){
            //父类功能保持不变
            super.show();
            //增加新的功能
            System.out.println("姓名显示");
            System.out.println("头像显示");
    	}
    }
    
    • 重写:方法名称一样、参数列表一样、返回值类型一样,前提有继承关系
    • 重载:方法名称一样、参数列表不一样、返回值类型无要求,在本类中

    注意事项:

    • ​ 子类方法重写父类方法,必须保证权限>=父类权限
    • ​ 子类方法覆盖父类方法,返回值类型、方法名称、参数列表必须一模一样

    继承后的特点---构造方法:

    ​ 构造方法的名字和类名必须一致,所以子类无法继承父类中的构造方法

    ​ 构造方法的作用一般是用来初始化成员变量,所以子类在初始化的过程中,必须先执行父类中的初始化动作。子类当作的构造方法当中,默认有一个super( );表示调用父类的构造方法,父类的成员变量初始化之后,才可以给子类使用。

    public class Fu{
    	private int n;
    	public Fu(){
    		System.out.println("Fu");
    	}
    }
    public class Zi extends Fu{
        
    	public Zi(){
    		//super()隐式调用
    		System.out.println("Zi");
    	}
    }
    //输出    Fu
    //		 Zi
    

    super和this关键字:

    ​ 父类空间优先于子类对象的产生

    ​ 在每次创建子类对象的时候,先初始化父类空间,目的在于子类对象中包含了其对应的父类空间,便可以包含父类的成员,如果父类成员非私有,则子类可以随意使用父类成员,代码体现在子类的构造方法调用时,会先调用父类的构造方法

  • 相关阅读:
    C# 二维数组 排列组合
    highcharts(数据可视化框架),ajax传递数据问题
    EasyPoi导入验证功能
    EasyPoi使用入门
    SSJ(Spring+springMVC+JPA)设置xml文件思路流程
    spring框架设置jdbc
    使用JDBC完成CRUD(增删改查)
    Java的数据类型(常量,变量)
    jdk8的安装与卸载
    Java的第一个你好世界
  • 原文地址:https://www.cnblogs.com/mitoris/p/14033281.html
Copyright © 2011-2022 走看看