代码改变世界

继承

2016-10-28 23:25  backyyan  阅读(225)  评论(0编辑  收藏  举报

继承:继承是面对对象的重要机制,该机制自动地为一个类提供另一个类的操作和数据,这使得程序员只需要在新类中定义已有类中没有的成分来建立新类。

继承的定义:每个子类都只有一个父类,一个父类可以有多个子类,子类会继承父类的特性。这叫单继承,java只支持单继承。

继承说明:由于子类不能直接调用父类中的private私有成员,所以子类把父类中的所有非私有成员全部继承,变成自己的。

例如:如果父类中有5 个成员,其中私有成员有2 个,子类自己有2个成员,实际上子类已经有5个成员了。

在定义子类中,他的父类由extends关键字指出,格式如下:

类修饰符class类名extends父类{

成员定义

}

ps:子类只能继承非私有的成员;如果没有extends并不代表他没有父类,是根,而是默认该类的父类是系统软件包中的java.lang.Object类。

 

//定义一个人类,含姓名性别两个成员变量。定义一个学生类,从人类中继承下来,含班级。成绩两个成员变量和一个输出信息的成员方法。

public class zhangqiang {
public static void main(String []args)
{
Student stu=new Student();
stu.setp("张强",'男');
stu.sets("软件1班",89);
stu.show();
Person p=new Person();
p.setp("李梅",'女');

}
}
class Person{
protected String name;
protected char sex;
void setp(String name,char sex){
this.name=name;
this.sex=sex;
}
}
class Student extends Person{
protected String grace;
protected int g;
void sets(String grace,int g){
this.grace=grace;
this.g=g;
}
void show(){
System.out.println("姓名为"+name);
System.out.println("性别为"+sex);
System.out.println("年龄为"+g);
System.out.println("班级为"+grace);
}
}

子类对象可以访问自己和父类中的成员,而父类中的对象只能访问父类中非私有成员,不能访问子类中的成员。

子类只能继承属性,不能继承属性的值。

例如:

public class A {
int x1=10;
int x2=20;
private int x3=30;
int getX3(){
return x3;
}
}
class B extends A{
int y1=15;
int y2=25;
}

 

//B类相当于

public class B {
int y1;
int y2;
B(int y1,int y2){
this.y1=y1;
this.y2=y2;
}
int x1;
int x2;
int getX3()
{
return x3;
}
}

 父类A中有四个成员(不包括构造)子类自己有2个成员,继承下来的有3个成员,实际上B有5 个成员。