对于继承,当大家看到这个词语的时候,在现实生活中,想必也会自然而然的想到了:继承家产??那么,在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.子类和父类成员变量同名!
如果子类与父类有同名的成员变量,则优先访问子类自己的!!
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 的值分别为多少??
在子类方法中通过子类对象访问成员时:
综上所述:成员变量的访问遵循就近原则,子类自己有,则先访问子类自己的,如果子类没有,那么像父类中查找!
在上述代码中,如果,就想要访问父类的成员c ,那么可以使用:super.c
System.out.println(super.c);
对于super关键字 :可以用来在子类方法中访问父类的成员!!
super关键字的使用:
- super. date :在子类当中访问父类的成员变量
- super. func() :在子类当中访问父类的成员方法
对于super关键字的使用时注意事项:
说明: