java程序员必备的基础知识_java面向对象之继承(一)
在学习继承之前我们来来思考这样一个问题:
我想创建一个学生类,男学生类,女学生类,会有这么几个问题:
1、不管是男同学还是女学生,都是学生,学生公有的方法和属性本来就有很多。
2、虽然都是学生,但是男女毕竟有别,还是有一些不一样的地方。
在以往的认知当中,我们不得不创建学生类,男学生类,女学生类,然后书写每一个重复的属性和方法。
但是java给我们提供了更好的解决方案叫继承。
java程序员必备的基础知识_java面向对象之继承(一)
1、基本介绍
继承可以解决代码复用的问题,一个类可以继承一个类,被继承的类我们称之为【父类】或者【超类】,另一个类称之为【子类】也 叫【派生类】,子类可以通过extends关键字轻松拥有获取父类的 成员变量和成员方法的能力,除了被private修饰的。在java中是单 继承的,这样可以规范代码的实现。
继承其实很好理解的,我们天生就会继承来自父母的很多基因,那爸爸的很多能力或者特征你天生就会拥有。
java程序员必备的基础知识_java面向对象之继承(一)
写一个小代码,我们尝试理解一下:
// 定义一个父亲类,有名字属性和一个吃的方法public class Father {private String name; public void eat(){ System.out.println('I am eating!'); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
// 子类使用extends关键字public class SonONe extends Father {}// 子类使用extends关键字public class SonTwo extends Father {}
现在无论是哪个子类都能调用父类的方法:
public static void main(String[] args) {SonONe sonONe = new SonONe();sonONe.eat();}
当然,儿子作为一个单独的个体,它依然可以拥有属于自己的属性和方法。
public class SonONe extends Father { public void play(){ System.out.println('I am playing!'); }}
经过这样的设计,我们的代码实现起来可以十分的灵活。
比如:我们现在一个现实中父亲、儿子、孙子之间的关系的类,我们是不是就可以这样设计类了。
public class Father { public String name = 'lily'; public Father() { System.out.println('Father is created!'); } public void eat(){ System.out.println('father is eating!'); }}
public class Son extends Father{ public Son() { System.out.println('Son is created!'); } public void work(){ System.out.println('son is working!'); }}
public class GrandSon extends Son{ public GrandSon() { System.out.println('GrandSon is created!'); } public void play(){ System.out.println('grandson is playing!'); }}
public static void main(String[] args) {new GrandSon();}//下面为输出的结果:Father is created!Son is created!GrandSon is created!
赞 (0)