Java面向对象的特点之:继承
创始人
2024-02-08 17:46:28
0

对于继承,当大家看到这个词语的时候,在现实生活中,想必也会自然而然的想到了:继承家产??那么,在Java的面向对象的时候,也存在这样的思想!!

下面笔者来带领大家走进:继承!!

class Dog {public String name ;public  int age ;public void eat() {System.out.println(name +" 正在吃狗粮!");}//添加特有的方法public void wangwang() {System.out.println(name+"正在汪汪叫!");}
}class Cat {public String name ;public  int age ;public void eat() {System.out.println(name +" 正在吃mao粮!");}//添加特有的方法public void miaomiao() {System.out.println(name+" 正在喵喵叫,惹人爱!(づ ̄3 ̄)づ╭❤~");}
}

在上述的代码中,Dog 与Cat这两个类之间有共用的成员变量,成员方法,也有特有的成员方法!!

 对于上述的共有的成员属性,在上述代码中,仅仅定义了两个类,但是当定义多个类,都含有共有的成员属性,那么写起来,不得麻烦死??因此,我们可以将共有的属性抽取出来,放到一个类当中,当要使用的时候,就可以去哪儿拿就可以了!!

对上述代码进行简单更改:


class Animal {public String name ;public  int age ;public void eat() {System.out.println(name +" 正在吃饭!");}
}
class Dog extends Animal {//添加特有的方法public void wangwang() {System.out.println(name+"正在汪汪叫!");}
}class Cat extends Animal{//添加特有的方法public void miaomiao() {System.out.println(name+" 正在喵喵叫,惹人爱!(づ ̄3 ̄)づ╭❤~");}
}

在上述代码中:

在上述的代码中,就用了继承的思想!!

继承的最大意义:是对代码的重复利用!!(is a)的关系!!extands 是继承的关键字!!

class Dog extends Animal 所代表的意义是:  Dog is  a Animal

继承的概念:

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性 的基础上进行扩展增加新功能,这样产生新的类,称派生类(子类)。继承呈现了面向对象程序设计的层次结构, 体现了 由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用

继承的简单语法:

修饰符(可写可不写)  class 子类名称  extends 父类名称 {

  …………

…………

}

注意:

  1. 子类会将父类中的成员变量或者成员方法继承到子类中了
  2. 子类继承父类之后,必须要新添加(也可以不添加)自己特有的成员,体现出与基类的不同,否则就没有必要继承了
  3.  Java中只能继承一个父类,并不支持多继承!
  4. 子类也可以当父类

父类成员的访问!!

1.子类和父类不存在同名的成员变量(比较简单,容易理解)

2.子类和父类成员变量同名!

如果子类与父类有同名的成员变量,则优先访问子类自己的!!


class Base {  //父类public int a ;public int b ;public int c ;  //默认成员变量,c ---->0
}class Derived extends Base {public int c = 9 ;public void func() {System.out.println(a);System.out.println(b);System.out.println(c);}
}public class test {public static void main(String[] args) {Derived derived = new Derived();derived.func();}
}

对于上述的代码,父类和子类有着相同的成员变量,那么,请看一下代码的运行结果:

 拓展一下:当我们在类中有一下代码的时候:

    public class Base {int a;int b;int c;}public class Derived extends Base {int a;char b;}

并且给其赋值:

 public void method(){a=100;b=110;c=120;}

通过上述代码,思考一下:a ,b, c 的值分别为多少??

 在子类方法中通过子类对象访问成员时:

  1. 如果访问的成员变量子类中,那么就先访问子类自己的成员变量
  2. 如果访问的成员变量子类中没有,那么则访问父类继承下来的,如果父类中没有定义,那么编译报错!
  3. 如果访问的成员变量与父类的成员变量同名,则优先访问子类自己的成员变量!

综上所述:成员变量的访问遵循就近原则,子类自己有,则先访问子类自己的,如果子类没有,那么像父类中查找!

在上述代码中,如果,就想要访问父类的成员c ,那么可以使用:super.c

  System.out.println(super.c);

对于super关键字 :可以用来在子类方法中访问父类的成员!!

super关键字的使用:

  1. super. date :在子类当中访问父类的成员变量
  2. super. func() :在子类当中访问父类的成员方法

对于super关键字的使用时注意事项:

  1. 只能在非静态方法中使用
  2. 在子类方法中,访问父类的成员变量和方法

子类中访问父类的成员方法!!

  1. 成员方法名字不同 (简单)
  2. 成员方法名字相同,跟父类成员的访问类似,可以用super来访问

说明:

  1. 通过子类对象访问父类与子类中不同名的方法时,优先在子类中找,找到则访问,找不到,则编译报错!
  2. 通过派生类(子类)对象访问父类和子类同名方法时,如果父类和子类同, 方法的参数列表不同(重载),根据调用方法传递的参数选择合适的方法访问,如果没有,则报错!

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...