ok了家人们,今天我们学习了面向对象中关键字的使用和抽象类,话不多说,我们一起看看吧,(今天终于星期五了,芜湖!!!)
一,this和super关键字
1,this关键字的三种用法
1.1 this的意义
this :表示当前对象 this 可以访问:本类的成员属性、成员方法、构造方法;1.2 this.成员变量(第一种)
我们创建了一个Demo1类,并定义了一个没有封装的成员变量。
用了一个无参方法,
定义了一个show()方法,里面有一个局部变量,有两个输出语句
第一个输出语句打印了局部变量的值(num)
第二个打印了成员变量的值(this.num)
我们在主方法main中调用show()方法看看如何。
这就是this访问本类成员变量的基本使用了。
1.3 this.成员方法名();(第二种)
还是在Demo01中写,前面跟上面的一样没变,
在后面又定义了两个方法show02()和show03(),
并在show02()调用了show03()方法。
在主方法调用show01()方法和show02()方法,看看怎么个事。
可以看到我们在show02()方法中调用成功了,
这就是this访问本类成员方法的基本使用了。
1.4 this访问本类构造方法(第三种)
我们依旧是在Demo01中写,在第二种基础上加上了有参方法,
并在有参方法中调用了无参方法
我们创建Demo01类的对象看看怎么说,
这时有人可能会问,有参可以调用无参,那么无参可以调用有参吗?那当然可以了。
ok接下来我们看下super关键字的三种用法
2,super关键字的三种用法
2.1 super的意义
super :表示父类对象 super 可以访问:父类的成员属性、成员方法、构造方法;2.2 super.父类成员变量名(第一种)
我们定义一个Super类,里面有一个成员变量。
子类smallSuper继承父类Super,里面定义了一个成员变量,
定义了一个show()方法,里面有一个局部变量
输出语句分别打印num,this.name,super.name
我们在main方法中调用一下show()方法看看
调用成功,这就是super访问父类的成员变量的基本使用了。
2.3 super.成员方法名();
我们在Super类中定义了一个方法method(),
我们又在子类smallSuper创建了一个同名方法method(),
我们在main方法中调用一下子类的method()方法
调用出来了,这就是super访问父类的成员方法的基本使用了。
2.4 super访问父类的构造方法
Super类中又加了两个方法,有参和无参方法,并有输出语句,有参方法里面有一个变量
子类也加无参方法,里面用super(num:10)调用父级的有参方法
也有一个输出语句
在main主方法创建子类对象,看看控制台的结果
ok,这就是super访问父类的构造方法的一个基本使用了。
2.5 注意事项
super 访问成员变量和成员方法 : 优先去父类中找 , 如果有就直接 使用 , 如果没有就去爷爷类中找 , 如果有 , 就用 , 依次类推 ... 子类的构造方法默认会调用父类的空参构造方法 , 如果父类中的没 有空参构造方法 , 只定义了有参构造方法 , 会编译报错。3,抽象类
3.1 抽象类的概述和定义
概述 : 使用 abstract 关键字修饰的类就是抽象类 特点 : 这种类不能被创建对象 , 它就是用来做父类的 , 被子类继承的 抽象类的定义: 抽象类中的成员 成员变量 成员方法 构造方法 抽象方法3.2 抽象方法
概述:没有方法体 , 使用 abstract 修饰的方法就是抽象方法![](/i/ll/?i=direct/d952fecdc6594e08881885261dd67a78.png)
![](/i/ll/?i=direct/672674b111af4fdfb209b12335ab1783.png)
![](/i/ll/?i=direct/62868e1122db4eabb2b17f22cfb58ade.png)
![](/i/ll/?i=direct/1f6fade0159848b3a4da28ac3b354a9f.png)
![](/i/ll/?i=direct/8767331c9eec4d38b8c22013fab8022c.png)
![](/i/ll/?i=direct/e6819670951344fe814ae5b6c95af3a4.png)
3.3 抽象类的特点
抽象类不能被创建对象,就是用来做 “ 父类 ” ,被子类继承的。 抽象类不能被创建对象,但可以有 “ 构造方法 ”—— 为成员属性初始化。 抽象类中可以没有抽象方法 , 但抽象方法必须定义在抽象类中子类继承抽象类后, 必须重写抽象类中所有的抽象方法 , 否则子类必须也是一个抽象类![](/i/ll/?i=direct/dfc1cbad3f6a42da9928cf547ac7c2a4.png)
![](/i/ll/?i=direct/98c5e0027bad49b3b74e91ac0603ae05.png)
![](/i/ll/?i=direct/80d9a69360d44238815fa66e36738fa4.png)