• 从头认识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的关系。

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

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

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

    目录

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

  • 相关阅读:
    SQLite out of order error备忘
    SQLITE_TOOBIG
    Android CursorWindow问题备忘
    SQLite3神奇的UNION、UNION ALL与LIMIT组合
    Android Database(SQLite)参数绑定问题初探
    Android SQLite 加入自定义函数
    修改替换/system/framework/framework.jar后重启手机为何没有效果?
    手动调用NDK编译HelloWorld
    第一篇
    程序题
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944462.html
Copyright © 2020-2023  润新知