zoukankan      html  css  js  c++  java
  • 从头认识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的关系。

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

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

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

    目录

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

  • 相关阅读:
    3、文件、函数练习题
    迭代器
    MySQL必知必会-用正则表达式进行搜索
    MySQL必知必会-检索数据
    数据结构与算法分析-树
    数据结构与算法分析-队列
    数据结构与算法分析-栈
    数据结构与算法分析-表
    数据结构与算法分析-算法分析
    数据结构与算法分析-引论
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944462.html
Copyright © 2011-2022 走看看