网站首页 > 技术文章 正文
在现实生活中,继承一般指的是子 女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗集成自狗。
这些动物之间会形成-一个继承体系,具体如图所示。
在Java中,类的继承是指在一个现有类的基础上去构建一个新的类, 构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类, 需要使用extends关键字。接下来通过一一个案例来学习子类是如何继承父类的,如下所示。
//定义Animal类
class Animal {
String name; //定义name属性
//定义动物叫的方法
void shout() {
System. out.println("动物发出叫声");
//定义Dog类继承Animal类
class Dog extends Animal {
//定义一个打印name的方法
public void printName(){
System. out . println ("name=" + name);
)
//定义测试类
public class Example01{
public static void main(Stringt) args) (
Dog dog=new Dog(); //创建一个Dog类的实树对象
dog.name=“沙皮狗”: //为Dog类的name属性进行赋值
dog.printName(); //调用dog类的getInto(方法
dog. shout() ; //调用dog类继承来的shout()方法
}
}
运行结果如下
name=沙皮狗
动物发出叫声
Dog类通过extends关键字继承了Animal 类,这样Dog类便是Animal类的子类。从运行结果不难看出,子类虽然没有定义name属性和shout()方法,但是却能访问这两个成员。这就说明,子类在继承父类的时候,会自动拥有父类所有的成员。
在类的继承中,需要注意-些问题, 具体如下。
1.在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类,
例如下面这种情况是不合法的。
class A{ }
class B{ }
class C extends A,B{} // C类不可以同时继承A类和B类
2.多个类可以继承-一个父类,例如下面这种情况是允许的。
class A{}
class B extends A{}
class C extends A{} // 类B和类C都可以继承类A
3. 在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。例如下面这种情况是允许的。
class A{}
class B extends A{} // 类B继承类A,类B是类A的子类
class C extends Bl{} // 类C继承类B,类C是类B的子类,同时也是类A的子类
4.在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的示例中,B类是A类的子类,同时又是C类的父类。
猜你喜欢
- 2025-07-24 Java变量(java变量有什么作用)
- 2025-07-24 Java面试常见问题:Java注解(java中的面试题)
- 2025-07-24 Java编程入门第一课:HelloWorld(java编程从入门到实践)
- 2025-07-24 Java基础教程:Java继承概述(java里继承的概述)
- 2025-07-24 java基础之——访问修饰符(private/default/protected/public)
- 2025-07-24 如何规划一个合理的JAVA项目工程结构
- 2025-05-02 Java 异常知识点一篇没够再来一篇
- 2025-05-02 JVM参数、main方法的args参数使用
- 2025-05-02 别再问Cookie了,再问就崩溃了!(别再问我什么是disco原唱)
- 2025-05-02 Java 如何设计 API 接口,实现统一格式返回?
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)