Java学习之面向对象三大特征(继承性 1)

面向对象的三大特征:

封装性、继承性、多态性

继承性是多态的前提下,没有继承就没有多态。(后期会有多态相关的更新)

  • 继承性主要的作用(可以解决的问题):

可以提取出多个类中的共同的特性,从而减少代码量,提高开发效率。例如:老师类和学生类中,都有学习、吃饭、睡觉等行为,所以可以将这些共有的特性提取出来,而这些行为都是人所必需的的,所以可以将这些行为放入一个“人”的类中,让老师和学生都来继承人类的这些行为。

继承的特点:

  • 子类可以拥有(继承)父类的内容
  • 子类也可以拥有自己专有的内容

定义格式:

public class Person {  //父类
//代码块
}
public class Teacher extends Person {  //子类1
//代码块
}
public class Student extends Person {  //子类2
//代码块
}

- 继承实现:

public class Person {//父类

    String name = "中国人";
    
    public Person() {   ///构造函数
    }

    public void study(){
        System.out.println("人要学习");
    }
}
public class Teacher extends Person {  //子类1

    String name = "北京人";

    public Teacher() {
    }
}
public class Main {

    public static void main(String[] args) {
        Person man = new Person();  //创建父类对象
        man.study();  ///调用父类成员方法
        Teacher teacher = new Teacher();  //创建子类对象
        teacher.study();    //调用子类成员方法

在这里插入图片描述
如上图所示,第一条输出为用父类对象调用父类的成员方法;第二条输出是用子类调用子类的成员方法,但是子类中没有定义study成员方法,但是子类还继承了父类的成员方法,所以实际上是子类继承父类的成员方法所得到的结果。

成员变量重名

如上代码可以发现,父类有一个成员变量“name”,而子类也有一个成员变量“name”,并且子类又继承了父类的内容,那么怎么区分父类和子类的同名成员变量呢?

访问成员变量
首先我们要明确如何访问成员变量,这里有两种常用的方法:

  1. 直接通过对象访问成员变量。
Person man = new Person();
System.out.println(man.name);

在这里插入图片描述
2. 间接的通过成员方法访问成员变量。

    public void study(){
        System.out.println(this.name);
        System.out.println("人要学习");
    }

如上代码,在Person的成员方法中添加一行访问成员变量的代码。

        Person man = new Person();
        man.study();

在这里插入图片描述
在主函数中调用Person类的成员方法。

有了上述的调用方法,则同名的情况下只需理清思路即可。

  1. 父类和子类存在同名成员变量,则可通过各自的对象直接访问。
    (对象名.成员变量)

  2. 可以通过各自的成员方法访问成员变量。但是注意一点:若子类没有成员方法,则继承父类的,而父类成员方法中访问的是父类的成员变量,所以要想通过子类对象访问父类的成员变量,则可通过此特点实现。

  3. 通过子类访问父类的成员变量还有一种常用方法。

    public void teach(){
        System.out.println(super.name);
    }

如上图,子类中的成员方法调用父类的成员变量。(super.成员变量名)

  1. 在上述代码中可以发现this关键字。它用于成员方法访问本类的成员变量。
    (this.成员方法名)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值