【济南校区】java基础-继承 大家都知道面向对象有三大特征,封装、继承、多态,我们今天就和大家聊一聊继承的概念和在我们平时开发中的用法。 继承的概念:在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。 继承的格式:在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。如下:class 子类 extends 父类 {}。 代码如下: [Java] 纯文本查看 复制代码 package com.itheima_01;
/*
* 继承:多个类有共同的成员变量和成员方法,抽取到另外一个类中(父类),在让多个类去继承这个父类,我们的多个类就可以获取到父类中的成员了。
* extends
*
*/
public class ExtendsDemo {
public static void main(String[] args) {
DotA1 d = new DotA1();
d.start();
LOL1 l = new LOL1();
l.start();
}
}
class Game1 {
String name;
double version;//版本号
String agent;//代理商
public void start() {
System.out.println("游戏启动了");
}
public void stop() {
System.out.println("游戏关闭了");
}
}
class DotA1 extends Game1 {
/*String name;
double version;//版本号
String agent;//代理商
public void start() {
System.out.println("游戏启动了");
}
public void stop() {
System.out.println("游戏关闭了");
}*/
}
class LOL1 extends Game1 {
/*String name;
double version;//版本号
String agent;//代理商
public void start() {
System.out.println("游戏启动了");
}
public void stop() {
System.out.println("游戏关闭了");
}*/
} 继承的特点: 在类的继承中,需要注意一些问题,具体如下: 1、在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的。 class A{} class B{} class C extends A,B{} // C类不可以同时继承A类和B类 2、多个类可以继承一个父类,例如下面这种情况是允许的。 class A{} class B extends A{} class C extends A{} // 类B和类C都可以继承类A 3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。 class A{} class B extends A{} // 类B继承类A,类B是类A的子类 class C extends B{} // 类C继承类B,类C是类B的子类,同时也是类A的子类 4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类 继承中成员变量的特点: A:子类只能获取父类非私有成员 子父类中成员变量的名字不一样直接获取父类的成员变量 子父类中成员变量名字是一样的获取的是子类的成员变量 B:就近原则:谁离我近我 就用谁 如果有局部变量就使用局部变量 如果没有局部变量,有子类的成员变量就使用子类的成员变量 如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量 C: super:可以获取父类的成员变量和成员方法,用法和this是相似的 代码如下: [Java] 纯文本查看 复制代码 package com.itheima_01;
/*
* 继承中成员变量的特点
* 子类只能获取父类非私有成员
* 子父类中成员变量的名字不一样直接获取父类的成员变量
* 子父类中成员变量名字是一样的获取的是子类的成员变量
*
* 就近原则:谁离我近我就用谁
* 如果有局部变量就使用局部变量
* 如果没有局部变量,有子类的成员变量就使用子类的成员变量
* 如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
* 啥都没有,出错了!!!
*
* super:可以获取父类的成员变量和成员方法,用法和this是相似的
*/
public class ExtendsDemo3 {
public static void main(String[] args) {
Kid3 k = new Kid3();
k.show();
}
}
class Dad3 {
String name = "建霖";
}
class Kid3 extends Dad3 {
String name = "四葱";
public void show() {
String name = "五葱";
System.out.println(super.name);
System.out.println(this.name);
System.out.println(name);
}
} 好了,今天和大家聊继承就到这里,希望大家在闲暇时间多多联系,毕竟编程只有多敲多练才能掌握住。
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
黑马程序员济南中心联系电话:0531-55696830
|