package extend; /*面向对象-继承: * 多个类的共同成员变量和成员方法。抽取到另一个类中(父类),我们多个类就可以访问到父类的成员了 * */ class Game{ String name; double vesion;//版本号 String agent;//代理商 public void start() { System.out.println("游戏启动"); } public void stop() { System.out.println("游戏关闭"); } } class CF extends Game{ } class LOL extends Game { } public class extend { public static void main(String[] args) { CF cf=new CF(); cf.start(); LOL lol=new LOL(); lol.start(); } }
初步的认识后,现在来看下继承在java中的特点
package extend; class update{ public void update() { System.out.println("更新了"); } } class QQspeedandchuangqi extends update{ public void start() { System.out.println("game start....."); } public void stop() { System.out.println("game stop....."); } } class QQspeed extends QQspeedandchuangqi{ } class Chaungqi extends QQspeedandchuangqi{ } public class extends_java_special { public static void main(String[] args) { QQspeed qqspeed=new QQspeed(); Chaungqi chaungqi=new Chaungqi(); qqspeed.update(); qqspeed.start(); qqspeed.stop(); } }在以上代码中我们可以发现,java中的继承,不能实现一对多个父类,而可以多层次的继承。
继承中的成员变量,局部变量的特点:
package extend; class parents{ private String name="我是parents的成员变量"; } class Father extends parents{ public void speak() { System.out.println("我叫"+name); } } public class extends_member { public static void main(String[] args) { Father father=new Father(); father.speak(); } } /*在上述代码中 子类(Father类)继承了parents(父类),父类中有私有变量name,但是子类访问不了父类的私有变量,所以那么会报错*/
package extend; class parents{ String name="我是parents的成员变量"; } class Father extends parents{ String name="我是Father的成员变量"; public void speak() { System.out.println("我叫"+name); } } public class extends_member { public static void main(String[] args) { Father father=new Father(); father.speak(); } } /*在上述代码中 子类(Father类)继承了parents(父类),父类中有成员变量name,但是子类也有成员变量name, * 此时的打印输出为:我叫我是Father的成员变量 * 所以在同一个名称的成员变量下,对象访问的应该是子类的成员变量 */
package extend; class parents{ } class Father extends parents{ String name="我是Father的成员变量"; public void speak() { String name="我是Father的局部变量"; System.out.println(name); } } public class extends_member { public static void main(String[] args) { Father father=new Father(); father.speak(); } } /*在上述代码中 子类(Father类)继承了parents(父类),父类中有成员变量name1,但是子类也有成员变量name2, * 此时的打印输出为:我叫我是Father的局部变量 * 所以在有局部变量的时候就用局部变量,遵循就近原则 */ 总结下继承中的成员变量,局部变量的特点:
1.子类(Father类)继承了parents(父类),父类中有私有变量name,但是子类访问不了父类的私有变量。2.子父类中有相同名称成员变量,则依照就近原则,用子类的成员变量3.子父类中有不通的名称成员变量,则使用父类中的成员变量4.如果有局部变量就是用局部变量super:可以访问父类的成员this:引用当前对象
接下来是继承中的成员方法特点:
子类没有方法:package extend; class parents{ public void speak() { System.out.println("父母"); } } class Father extends parents{ } public class extends_member { public static void main(String[] args) { Father father=new Father(); father.speak(); } } 子类有同名方法 package extend; class parents{ public void speak() { System.out.println("父母"); } } class Father extends parents{ public void speak() { System.out.println("爸爸"); } } public class extends_member { public static void main(String[] args) { Father father=new Father(); father.speak(); } } /*如果子类中有这个方法,那么会进行方法的重写,覆盖父类方法,因为父类的方法不一定子类都具备。 如果子类没有方法,那么就会使用父类的方法。*/