继承概述:
多个类中存在相同的属性和行为时,将这些内容抽到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类就可以了。
通过extends关键字可以实现类与类的继承
格式:class 子类名 extends 父类名 { }
单独的这个类称为父类,基类或者超类,这多个类可以称为子类或者派生类。
如以下代码:
如以下代码:
//父类
class Example61{
{
String name = "林青霞";
int age = 27;
System.out.println("姓名:"+name+",年龄:"+age);
}
}
//子类
class Example62 extends Example61{
}
//子类
class Example63 extends Example61{
}
public class Example6 {
public static void main(String[] args) {
Example61 s = new Example61();
Example62 x = new Example62();
Example63 y = new Example63();
}
}
/*
* 输出:
* 姓名:林青霞,年龄:27
* 姓名:林青霞,年龄:27
* 姓名:林青霞,年龄:27
*/
继承的好处:
a:提高代码的复用性
多个类相同的成员可以放到同一个类中。
b:提高代码的维护性
功能的代码需要修改,修改一处就可以了。
c:让类与类之间产生关系(多态的前提,也是继承的缺点),增强了耦合性,
开发的原则:低耦合,高内聚。
耦合:类与类的关系。
内聚:就是自己完成某件事情的能力。
java中继承特点:
a:java只支持单继承,不支持多继承。
有些语言是支持多继承,多继承格式:extends 类1,类2....
b:Java支持多层继承(继承体系)
如下代码:
class Garandfather{
public void print(){
System.out.println("我是你爸爸");
}
}
class Father extends Garandfather{
public void Print(){
System.out.println("我是你老子");
}
}
class Son extends Father{
}
public class Example7 {
public static void main(String[] args) {
Son s = new Son();
s.print();
s.Print();
}
}
/**
* 输出:
* 我是你爸爸
* 我是你老子
**/
继承的注意事项:
A:子类只能继承父类所有非私有的成员(成员方法和成员变量)
B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法。
C:不要为了部分功能而去继承。
class A{
public void show1(){ }
public void show2(){ }
}
class B{
public void show2(){ }
public void show3(){ }
}
/*不能使用以下继承show2()来方便定义
class B extends A{
public void show3(){ }
}
*/
继承中成员变量的关系:
A:子类中的成员变量和父类中的成员变量名称不一样。
B:子类中的成员变量和父类中的成员变量名称一样。
在子类方法中访问一个变量的查找数据:
a:在子类方法的局部范围查找
b:在子类的成员范围查找
c:在父类的成员范围查找
d:若都没有查找到,就报错(采用的是就近原则)
程序代码:
class Father1{
public int number = 100;
public void show() {
int number = 1000;
}
}
class Son1 extends Father1{
public int number1 = 20;
// public int number = 200; //读入程序,则输出200 20
public void show1() {
// int number = 300; //读入程序,则输出300 20
System.out.println(number);
System.out.println(number1);
}
}
public class Example8 {
public static void main(String[] args) {
Son1 s = new Son1();
s.show1();
}
}
/*输出:
* 100
* 20
*/