无论前方有什么困难,我们都要保持一颗向上的心,不认命,不信命,就像图片上面的玫瑰一样,迎着暴雨而上,加油,奋斗的你!
引言:我们之前学过面向对象编程的一个重要特点,数据的封装性;本章讲的是面向对象编程的另一个特点——继承。
壹、继承
1、子类与父类
(1)继承的定义:继承是一种由已有的类创建新类的机制。
(2)Java规定,继承下来的新类叫做子类,被继承的类叫做父类(超类);这里注意,子类只有一个父类,这与c++不同,需要大家关注一下。
(3)继承的格式
class 子类名 extends 父类名{
.........
}
(4)注意点:
第一个就是(2)中知识点;第二个是,如果这里省略了extends,那么这里就默认了继承Object类,Object是Java.lang中类。
2、子类的继承性
(1)继承:就是子类可以继承父类的公有或者保护属性的变量或方法,换句话话说,从父类继承下来的,那就是你的,可以直接拿过来用。并且你还可以重写。我会在下面的代码里面为你们具体说明。
2.1 子类与父类由两种情况
(1)子类与父类在同一个包中 ,就是在如下图所示的src包里面。
这种情况,也就很自然地子类继承了父类的不是private的成员变量作为自己的成员变量,也自然地继承了父类中不是private的方法作为自己的方法。继承下来的变量和方法所拥有的访问权限不变。
这里需要注意,子类继承下来的变量与方法可以方法权限,但不可以变小,例如,父类中的protected权限可以在子类中放大为public权限。
(2)代码操作(代码一定要自己敲一遍,否则是没有效果的)
父类:
//初学者这里注意一下,一个Java
代码里面只能由一个public类,也就是主类
public class Xues {
//定义两个公有变量
public String name="sz";
public int age=21;
//定义一个无参构造方法,便于后面get()方法的操作,具体的我会在下一章讲解
public Xues() {}
//定义带参函数
public Xues(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("F2");
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void say( )
{
System.out.println("姓名:"+name+",年龄:"+age);
}
}
子类:
public class Xuesson extends Xues{
//定义子类所有的变量
public int score=100;
public Xuesson(){}
public Xuesson(String name,int age,int score)
{
this(name,age);//直接访问父类构造参数
this.score=score;
}
//定义super()方法,便于上面this指针对于父类的访问,方便操作
public Xuesson(String name, int age) {
super();
}
public int getScore() {
return score;
}
//重写,这里say()方法,如果去掉的话,那么下面的b.say()就是访问父类的,这就体现了继承性
public void say()
{
System.out.println("姓名:"+name+",年龄:"+age+",分数:"+score);
}
public static void main(String[] args) {
Xuesson b=new Xuesson();
b.say();
}
}
(2)子类与父类不在同一个包中
如果子类与弗雷不在一个包里,则子类继承了父类的protected、public的方法与成员变量,继承的成员与方法的访问权限依然不变,但子类不难继承父类的友好变量与友好方法。
(以上内容若有不理解的内容,可以私信我,我看到的话一定会回复,一定要保持学习,相信你的坚持终将美好!)