Java--面向对象之继承

本文详细介绍了Java中的继承概念,包括继承的定义、格式、案例分析,以及继承后成员变量和成员方法的特点,如成员方法的重写,并通过实例展示了super和this的使用。通过继承,子类能够复用父类的属性和行为,提高代码复用性,并为多态奠定基础。

前言

现实生活中的继承,孩子继承父辈的财产,孩子可以直接拿父辈的财产来使用,Java中的继承是指在现有类的基础上定义一个新的类,现有类称为父类,新的类称为子类,子类会自动拥有父类的可继承的内容多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示:
在这里插入图片描述
其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。
继承描述的是事物之间的所属关系,这种关系是: is-a 的关系。例如,图中兔子属于食草动物,食草动物属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。

内容

1. 继承的定义

继承: 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
好处① 提高代码的复用性。②类与类之间产生了关系,是多态的前提。

2. 继承的格式

通过extends关键字,可以声明一个子类继承另外一个父类,定义格式如下:

class 父类 {
   
   
...    
}
class 子类 extends 父类 {
   
   
...    
}

举个例子,代码如下:

// 1.定义父类
class Person {
   
   
    String name;
    int age;
    public void eat() {
   
   
        System.out.println(name + " 吃饭");
    }
    public void sleep() {
   
   
        System.out.println(name + " 睡觉");
    }
}
// 2.再写子类
class Student extends Person {
   
   
}
class Teacher extends Person {
   
   
}
class Worker extends Person {
   
   
}
// 3.定义测试类
public class Demo01 {
   
   
    public static void main(String[] args) {
   
   
        Student s = new Student();
        s.name = "小王";
        s.age = 18;
        s.eat();
        s.sleep();
        Teacher t = new Teacher();
        t.name = "马老师";
        t.age = 30;
        t.eat();
        t.sleep();
        Person p = new Person();
        p.name = "张三";
        p.age = 20;
        p.eat();
        p.sleep();
    }
}

3. 继承案例

请使用继承定义以下类:
1. 程序员(Coder)
成员变量: 姓名,年龄
成员方法: 吃饭,睡觉,敲代码
2. 老师(Teacher)
成员变量: 姓名,年龄
成员方法: 吃饭,睡觉,上课

分析

在这里插入图片描述

代码

1. 父类Person类
	public class Person {
   
   
	    String name;
	    int age;
	    public void eat() {
   
   
	        System.out.println(name + "吃饭");
	    }
	    public void sleep() {
   
   
	        System.out.println(name + "睡觉");
	    }
	}
2. 子类Coder类
	public class Coder extends Person {
   
   
	    // 敲代码
	    public void coding() {
   
   
	        System.out.println(name + "敲代码");
	    }
	}
3. 子类Teacher类
	public class Teacher extends Person {
   
   
	    public void teach() {
   
   
	        System.out.println(name + "上课");
	    }
	}
4. 测试类
	public class Demo02 {
   
   
	    public static void main(String[] args) {
   
   
	        Coder c = new Coder();
	        c.name = "马化腾";
	        c.age = 45;
	        c.eat();
	        c.sleep();
	        c.coding()
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值