day09【继承、super、this、抽象类】

第一章 继承

1.1  概述

由来

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示

其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。

继承描述的是事物之间的所属关系,这种关系是: is -a 的关系。例如,图中兔子属于食草动物,食草动物属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。

定义

继承 :就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

好处

1. 提高代码的复用性。

2. 类与类之间产生了关系,是多态的前提。

1.2  继承的格式

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

class 父类 {

...    

}

class 子类 extends 父类 {

...    

}

继承演示,代码如下:

class Employee {

String name; // 定义name属性    

// 定义员工的工作方法    

public void work() {    

System.out.println("尽心尽力地工作");        

}    

}

/*

 * 定义讲师类Teacher 继承 员工类Employee

 */

class Teacher extends Employee {

// 定义一个打印name的方法    

public void printName() {    

System.out.println("name=" + name);        

}    

}

/*

 * 定义测试类

 */

public class ExtendDemo01 {

public static void main(String[] args) {    

        // 创建一个讲师类对象

Teacher t = new Teacher();        

     

        // 为该员工类的name属性进行赋值

t.name = "小明";         

     

       // 调用该员工的printName()方法  

t.printName(); // name = 小明        

       

       // 调用Teacher类继承来的work()方法  

       t.work();  // 尽心尽力地工作  

}    

}

1.3  继承后的特点——成员变量

当类之间产生了关系后,其中各类中的成员变量,又产生了哪些影响呢?

成员变量不重名

如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。代码如下:

class Fu {

// Fu中的成员变量。    

int num = 5;    

}

class Zi extends Fu {

    // Zi中的成员变量    

int num2 = 6;    

// Zi中的成员方法    

public void show() {    

// 访问父类中的num        

System.out.println("Fu num="+num); // 继承而来,所以直接访问。        

// 访问子类中的num2        

System.out.println("Zi num2="+num2);        

}    

}

class ExtendDemo02 {

public static void main(String[] args) {    

        // 创建子类对象

Zi z = new Zi();         

       // 调用子类中的show方法  

z.show();          

}    

}

演示结果:

Fu num = 5

Zi num2 = 6

成员变量重名

如果子类父类中出现重名的成员变量,这时的访问是有影响的。代码如下:

class Fu {

// Fu中的成员变量。    

int num = 5;    

}

class Zi extends Fu {

// Zi中的成员变量    

int num = 6;    

public void show() {    

// 访问父类中的num        

System.out.println("Fu num=" + num);        

// 访问子类中的num        

System.out.println("Zi num=" + num);        

}    

}

class ExtendsDemo03 {

public static void main(String[] args) {    

       // 创建子类对象  

Zi z 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值