
无论前方有什么困难,我们都要保持一颗向上的心,不认命,不信命,就像图片上面的玫瑰一样,迎着暴雨而上,加油,奋斗的你!
引言:我们之前学过面向对象编程的一个重要特点,数据的封装性;本章讲的是面向对象编程的另一个特点——继承。
壹、继承
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的方法与成员变量,继承的成员与方法的访问权限依然不变,但子类不难继承父类的友好变量与友好方法。
(以上内容若有不理解的内容,可以私信我,我看到的话一定会回复,一定要保持学习,相信你的坚持终将美好!)