zoukankan      html  css  js  c++  java
  • C++重写实践&与java的差异

    C++重写父类方法后,父类中同名的方法在子类中就无法被调用,回报这个问题:

    java中是没有这个问题的,显然java设计者在设计的时候有意解决了这个问题。

    C++实践代码:

    #include <iostream>
    using namespace std;
    
    
    class Father{
    
        private:
            int father1;
    
        public:
            Father(){
                this->father1 = 11;
                //cout<< "无参构造器"<<endl;
            }
            virtual ~Father(){
                //cout<< "Father析构函数"<<endl;
            }
            int getFather1(){
                cout<< "Father:getFather1()"<<endl;
                return father1;
            }
            int getFather1(int a){
                cout<< "Father:getFather1(int a)"<<endl;
                return father1;
            }
    };
    
    class Son : public Father{
    
        private:
            int son1;
    
        public:
            Son(){
                this->son1 = 11;
            }
            ~Son(){
                //cout<< "Son析构函数"<<endl;
            }
            int getSon1(){
                return son1;
            }
    
            // 重写父类方法
            int getFather1(){
                cout<< "Son:getFather1()中调用重写的方法"<<endl;
                return  100;
            }
    
    };
    
    
    int main(){
    
        cout << "方法重写实践:" << endl;
    
        // 调用无参构造器
        Son son;
    
        // 调用son中重写的方法
        cout << "son.getFather1():" << son.getFather1() << endl;
    
        // 调用父类同名的方法 【报错】
        cout << "son.getFather1(int a):" << son.getFather1(11) << endl;
    
    
        cout << "方法重写实践 end." << endl;
    
        return 0;
    }

    java实践代码:

    package test.test;
    
    
    class Father {
    
        private int father1;
    
        public Father() {
            this.father1 = 11;
            //cout<< "无参构造器"<<endl;
        }
    
        public int getFather1() {
            System.out.println("Father:getFather1()");
            return father1;
        }
    
        public int getFather1(int a) {
            System.out.println("Father:getFather1(int a)");
            return father1;
        }
    }
    
    class Son extends Father {
    
        private int son1;
    
        public Son() {
            this.son1 = 11;
        }
    
        public int getSon1() {
            return son1;
        }
    
        // 重写父类方法
        public int getFather1() {
            System.out.println("Son:getFather1()中调用重写的方法");
    
            return 100;
        }
    
    }
    
    
    public class Main1 {
    
        public static void main(String[] args) {
    
            Son son = new Son();
    
            // 调用son中重写的方法
            son.getFather1();
    
            // 调用父类被重写同名的方法,java中可以
            son.getFather1(11);
    
            System.out.println("end");
        }
    
    
    }
  • 相关阅读:
    e666. 创建缓冲图像
    e670. 缓冲图像转换为图像
    e680. 使三元色图像变明变暗
    e659. 缩放,剪取,移动,翻转图形
    e656. 创建基本图形
    e657. 用直线和曲线绘制图形
    e658. 组合图形
    e655. 混合风格的文本
    e654. 获得文本的缩略图
    e652. Getting the Font Faces for a Font Family
  • 原文地址:https://www.cnblogs.com/do-your-best/p/11198725.html
Copyright © 2011-2022 走看看