版权声明:转载请注明出处。 https://blog.csdn.net/u014427196/article/details/49474241
继承:
增强代码复用性,使类和类之间产生关系,为多肽提供前提。
extends 关键字
使用类的继承时,查看体系顶层类,了解功能,创建子类对象完善功能的使用。
什么时候用继承?
类与类之间存在所属关系,定义继承。比如xx(狗)是yy(犬科动物)的一种。
java支持单继承,对c++多继承进行改良,支持多重继承。
单继承 :一个子类只能有一个父类。
class C extends A
{
}
多继承 :一个子类可以有多个父类。(java不允许,进行改良)
不直接支持愿意,会产生调用不确定性。
多重继承:比如B继承C,A继承B。
子父类变量间的关系
成员特点体现:
1 , 成员变量
若变量同名,则优先调用子类中变量。
同名时,用super区分父类。
和this用法相似。
this:代表本类对象引用
super:代表父类空间
子类不能直接访问父类私有变量内容。
2,成员函数
若函数同名,则优先调用子类中函数。这种现象称为覆盖操作。
函数两个特性:
1) 重载:同一类中
2) 覆盖:子类中
覆盖注意事项:
1),覆盖时,子类权限必须大于等于父类权限才可以引发覆盖。
public >无> private
2),static方法只能被static覆盖。
3,构造函数
子类构造对象时,访问子类构造函数时,父类也运行了。
子类构造函数第一行有隐式语句,super(),调用父类的(空参数)构造函数。
子类所以构造函数都会调用父类的空参数构造函数。
小例子:
package if_i_can_do;
import java.util.*;
class Person
{
String name;
int age;
int num = 5;
private int money = 1000000;
void speak0()
{
System.out.println("peo!");
}
}
class Student extends Person
{
private int num = 4;
Student(){}
void speak()
{
System.out.println("stu!");
System.out.println(num + " " + num);//若变量同名,则优先调用子类中变量。
System.out.println(this.num + " " + super.num);//同名时,用super区分父类。
//System.out.println(super.money); error:子类不能直接访问父类私有变量内容。
}
}
class Worker extends Person
{
Worker(){}
void speak0()
{
System.out.println("66666!");
}
void speak()
{
System.out.println("work!");
}
}
public class mfcheer
{
public static void main(String[] args)
{
Student s1 = new Student();
s1.speak0();
s1.speak();
Worker w1 = new Worker();
w1.speak0();
w1.speak();
}
}
运行结果:
留言