java复习第1天---1.2---继承

java复习第1天---1.2---继承


目录




内容

1、继承格式

修饰符 子类名 extends 父类名{}
例如:
class A{}
class B extends A{}

extends为继承关键字

2、成员变量的访问特点

  在继承关系中,成员变量访问规则如下:

  • 父类方法只能访问父类成员变量

  • 子类方法优先访问子类的成员变量,如果没有在访问父类成员变量

  • 本地变量优先级最高

  • 示例代码2-1:

      package inherited.var;
    
      public class Father {
      	int num = 20;
    
      	public void show() {
      		System.out.println(num);
      	}
      }
      
      package inherited.var;
    
      public class Son extends Father{
      	int num = 10;
    
      	public void show() {
      		int num = 30;
      		System.out.println(num);
      		System.out.println(this.num);
      		System.out.println(super.num);
      	}
      }
      
      package inherited.var;
    
      public class TestVar1 {
    
      	public static void main(String[] args) {
      		Son s1 = new Son();
    
      		s1.show();
      	}
      }
      结果:
      30
      10
      20
    

3、成员方法访问特点

访问规则同成员变量。

4、方法重写

4.1、方法重写与方法重载区别

  • 方法重写:override

    1. 方法名和参数列表一致
    2. 返回值范围小于等于父类方法返回值范围
    3. 子类方法访问权限要大于等于父类方法的访问权限
      • 权限范围:public > protected(default) > private
  • 方法重载:overload

    1. 方法名相同
    2. 参数不同
      • 参数数量不同
      • 参数类型不同

4.2、方法重写作用

  软件开发思想之一:开闭原则-对修改关闭,对扩展开放。即已经封装好的功能,尽量不在修改。如果想要对原有功能扩展,可以使用方法重写扩展原有功能。

  • 示例4.2-1:10年前手机功能:打电话、发短信、显示号码,现在手机不仅能显示号码,还可以显示姓名,显示头像。

  • 代码4.2-1:

      package inherited.override;
    
      public class Phone {
      	public void call() {
      		System.out.println("打电话");
      	}
    
      	public void info() {
      		System.out.println("发短信");
      	}
    
      	public void show() {
      		System.out.println("显示号码");
      	}
      }
      
      package inherited.override;
    
      public class NewPhone extends Phone{
      	public void show() {
      		super.show();
      		System.out.println("显示姓名");
      		System.out.println("显示头像");
      	}
      }
      
      package inherited.override;
    
      public class OverrideTest1 {
    
      	public static void main(String[] args) {
      		NewPhone np = new NewPhone();
      		np.call();
      		np.info();
      		np.show();
      	}
    
      }
    

5、构造方法

  • 规则:

    1. 调用子类构造方法,会默认调用父类无参构造方法
    2. 如果要显示调用,则用super(),且必须写在子类构造方法第一行。
    3. 显示调用父类构造方法,不能多次调用,最多一次
  • 示例代码5-1:

      package inherited.constructor;
    
      public class Father {
    
      	public Father() {
      		System.out.println("父类无参构造方法");
      	}
    
      	public Father(int a) {
      		System.out.println("父类带参构造方法");
      	}
      }
      
      package inherited.constructor;
    
      public class Son extends Father{
      	public Son() {
      		System.out.println("子类无参构造方法");
      	}
    
      	public Son(int a) {
      		System.out.println("子类带参构造方法");
      	}
    
      	public Son(double a) {
      		super(2);
      		System.out.println("子类带参构造方法");
      	}
      }
      
      package inherited.constructor;
    
      public class TestConstructor1 {
    
      	public static void main(String[] args) {
      		//Son s1 = new Son();
    
      		//Son s2 = new Son(2);
    
      		Son s3 = new Son(2.0);
      	}
    
      }
      
      结果:
      	s1
      	父类无参构造方法
      	子类无参构造方法
      	s2
      	父类无参构造方法
      	子类带参构造方法
      	s3
      	父类带参构造方法
      	子类带参构造方法
    

6、this与super

  • this:指向调用对象
    • this.成员变量
    • this.成员方法
  • super:指向父类
    • super.成员变量
    • super.成员方法
    • super() 父类构造方法

后记

本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
    后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章