飞道的博客

java学习笔记(八)继承

407人阅读  评论(0)

个人笔记,仅供参考

1、概述

面向对象的三大特性之一,是多态的前提

主要解决的问题是共性抽取,用于抽取类之间相同的部分

子类可以拥有父类的内容,也可以拥有自己的内容

2、继承的格式

父类就是普通的类

子类:

public class 子类的名称 extends 父类名称{
}

举例

父类:

//定义一个父类,员工
public class Employee {
    public void method(){
        System.out.println("方法执行");
    }
}

子类:

public class Teacher extends Employee{
}

创建子类对象并使用继承下来的方法

public class ExtendsDemo {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        //Teacher类当中虽然什么都没有,但是会继承父类
        teacher.method();
    }
}

注意:子类也可以是父类

3、访问成员变量的特点

没重名的按正常的方法就好,子类和父类的成员变量重名了就需注意以下几点:

有两种访问方法:

1、直接通过子类对象访问成员变量

​ 等号左边是谁,就优先用谁,没有则向上找

2、间接通过成员方法使用成员变量

​ 通过间接的成员方法访问成员变量,该方法属于谁就优先用谁

三种重名同时出现

即局部变量,本类成员变量,父类成员变量同时重名,用一下方法区分

局部变量: 直接使用
本类成员变量:this.成员变量名
父类成员变量: super.成员变量名

4、成员方法的访问

没重名正常用即可

重名时,创建的对象是谁,就优先用谁,没有则向上找

注意:无论成员方法还是成员变量,如果没有,都是向上找父类,不会向下找子类

5、方法的重写

重写概念(override):在继承关系中,方法的名称一样,参数列表也一样,也叫方法的覆盖

特点:创建的是子类对象,则优先用子类方法

注意

​ 1、必须保证父类子类之间的名称相同,参数列表也相同。可以在方法前写上@Override用来判断是否是有效重写(报错就是无效重写)

​ 2、子类方法的返回值必须小于等于父类方法的返回值(范围)

​ 3、子类方法的权限,必须大于等于父类方法的权限修饰符

public > protected > (default) > private
default是留空,什么都不写

什么情况使用重写

方法的功能增加时,为了不影响使用父类,这时会使用重写

6、构造方法的访问特点

父类和子类的构造方法都会执行,先执行父类再执行子类

注意:

​ 1、子类构造方法中有一个默认隐含的super()调用

​ 2、可以通过super关键字来使子类构造调用父类重载构造

​ 3、super的父类构造调用,必须是子类构造方法的第一个语句

​ 4、子类必须调用父类构造方法,不写则默认用父类无参构造

7、super关键字的三种用法

1、在子类的成员方法中访问父类的成员变量

public void methodZi(){
	System.out.println(super.num);
	//调用父类中的num
}

2、在子类的成员方法中,访问父类的成员方法

super.mehod()

3、在子类的构造方法中,访问父类的构造方法

super()

8、this关键字的三种用法

super用来访问父类内容,而this关键字用来访问本类内容

1、在本类的成员方法中,访问本类的成员变量

2、在本类的成员方法中,访问本类的另一个成员方法

3、在本类的构造方法中,访问本类的另一个构造方法

注意:第三种用法中this(...)必须是构造方法的第一个语句(唯一一个)

public Zi(){
	this(123);//本类的无参构造,调用本类的有参构造
}
public Zi(int n){

}

9、java继承的三个特点

1、JAVA语言是单继承的(一个类的父类只有唯一一个)

2、JAVA语言可以多级继承,最顶级是java.lang.Object类

3、一个子类的直接父类是唯一的,但一个父类可以用多个子类


转载:https://blog.csdn.net/starsky__/article/details/104745523
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场