当前位置: 代码迷 >> 综合 >> 从头认识java-6.2 继承(Generalization)(1)
  详细解决方案

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

热度:83   发布时间:2023-12-10 04:08:14.0

这一章节我们来聊聊继承(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的关系。

 

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

 

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

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

目录

 

  相关解决方案