• 从头认识java-6.2 继承(Generalization)(1)


    这一章节我们来聊聊继承(Generalization)。

    1.概念

    继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

    2.特点

    子类继承父类public和protected的属性域与方法,但不继承private的属性域和方法。

    当子类基础父类的方法时,如果需要,可以覆盖(@override),重新实现。

    下面是一个例子

    package com.ray.testobject;
    
    public class Test {
    
    	public static void main(String[] args) {
    	}
    }
    
    class Father {
    	private int id;
    
    	protected String name;
    
    	public int sex;
    
    	private void methodA() {
    	}
    
    	protected void methodB() {
    	}
    
    	public void methodC() {
    	}
    
    	public Father() {
    		System.out.println("create father");
    	}
    }
    
    class Sub extends Father {
    	@Override
    	protected void methodB() {
    		// TODO Auto-generated method stub
    		super.methodB();
    	}
    
    	@Override
    	public void methodC() {
    		// TODO Auto-generated method stub
    		super.methodC();
    	}
    
    	public Sub() {
    		System.out.println("create Sub");
    		// System.out.println(id);//报错
    		System.out.println(name);
    		System.out.println(sex);
    	}
    }


     

    3.跟父类的关系

    我们修改上面的代码来解释,is-a 是一个和is-like-a 像一个

    package com.ray.testobject;
    
    public class Test {
    
    	public static void main(String[] args) {
    	}
    }
    
    class Father {
    	private int id;
    
    	protected String name;
    
    	public int sex;
    
    	private void methodA() {
    	}
    
    	protected void methodB() {
    	}
    
    	public void methodC() {
    	}
    
    	public Father() {
    		System.out.println("create father");
    	}
    }
    
    class Sub1 extends Father {
    	public Sub1() {
    		System.out.println("create Sub");
    		// System.out.println(id);//报错
    		System.out.println(name);
    		System.out.println(sex);
    	}
    }
    
    class Sub2 extends Father {
    	private void say() {
    	}
    
    	public Sub2() {
    		System.out.println("create Sub");
    		// System.out.println(id);//报错
    		System.out.println(name);
    		System.out.println(sex);
    	}
    }


    我们来看一下上面的代码,sub1是直接继承father,而且没有其他的不同的方法,因此sub1是father的子类,是is-a关系;

    而sub2,除了继承father,还多了一个say 的方法,因此它跟father不完全相同,因此,它虽然是father的子类,但它们直接的关系是is-like-a的关系。

    总结:我们这一章节主要讨论了继承的概念、特性以及子类与父类之间的关系。

    这一章节就到这里,谢谢。

    -----------------------------------

    目录

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    [状压dp][spfa] Jzoj P3737 挖宝藏
    [计算几何] Jzoj P3736 数学题
    [排序][vector] Jzoj P6288 旋转子段
    [区间dp] Jzoj P6287 扭动的树
    [bfs][spfa] Jzoj P6286 走格子
    [点分治] Luogu P2664 树上游戏
    [树链剖分][树状数组] Luogu P3676 小清新数据结构题
    [计算几何][dp] Luogu P1995 智能车比赛
    [后缀数组][并查集] Luogu P2178 品酒大会
    [莫比乌斯反演][整除分块] Bzoj P2301 Problem b
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944462.html
Copyright © 2020-2023  润新知