Java基础:Day09笔记内容 (继承)

来源:互联网 发布:php 数值比较 编辑:程序博客网 时间:2024/06/04 20:31

继承
概述:
1、多个类相同的属性和功能抽取成另一个类, 让具有特有功能的类继承这个类.
2、通过extends关键字可以实现类与类的继承
格式:
class 子类名 extends 父类名 {}
特点 :
1、一个类只能有一个父类,不能有多个父类
2、Java支持多层继承
示例:
class ExtendsDemo2 {
public static void main(String[] args) {
C c = new C();
c.test();//调用父类的test方法
c.show();//调用爷爷类的show方法
}
}
class A {
public void show() {
System.out.println(“A show()”);
}
}
class B extends A {
public void test() {
System.out.println(“B test()”);
}
}
class C extends B {}
运行结果:
这里写图片描述

继承的注意事项
1、子类只能继承父类所有非私有的成员(成员方法和成员变量)
2、子类不能继承父类的构造方法
3、不要为了部分功能而去继承
示例:
class ExtendsDemo3{
public static void main(String[] args) {
//创建Zi类的对象
Zi z = new Zi();
System.out.println(z.name);//ok
System.out.println(z.age);//NO java:11: 错误: age可以在Fu中访问private
z.show();//Ok
z.test();//No .java:14: 错误: 找不到符号
}
}
class Fu {
String name;
private int age;
public void show() {
System.out.println(“Fu show()”);
}
private void test() {
System.out.println(“Fu test()”);
}
}
class Zi extends Fu {}
运行结果
这里写图片描述

继承中成员变量的关系
this:当前对象的引用 super:当前对象父类对象的引用
1、this.成员变量 1、super.成员变量
2、this.成员方法(…) 2、super.成员方法(…)
3、this(…)调用自己构造方法 3、super(…)调用父类的构造方法
示例:
class ExtendsDemo4 {
public static void main(String[] args) {
Zi z = new Zi();//创建Zi类的对象
z.show();//调用Zi的show方法
}
}
class Fu {
int i = 10;
}
class Zi extends Fu {
int i = 20;
public void show() {
int i = 30;
System.out.println(“i = ” + i);//输出当前show方法的变量i的值
System.out.println(“i = ” + this.i);//输出当前Zi类的成员变量i的值
System.out.println(“i = ” + super.i);//输出父类Fu类的成员变量i的值
}
}
运行结果:
这里写图片描述

继承中子父类构造方法的关系
1.子类构造默认会访问父类的空参构造, 什么都不写,子类构造默认第一句是super();
2.如果父类没有空参构造,子类可以显示通过super(参数列表)语句调用父类带参构造
3.子类构造可以通过this(..)调用其他构造,让其他构造去访问父类构造.
继承中成员方法关系
同名:子类对象调用的是子类的方法.
方法重写:子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。
示例
class ExtendsDemo6 {
public static void main(String[] args) {
Zi z = new Zi();//创建Zi类的对象
z.show();//调用show()方法 Zi show()
}
}
class Fu {
public void show() {
System.out.println(“Fu show()”);
}
}
class Zi extends Fu {
public void show() {
System.out.println(“Zi show()”);
}
}
运行结果
这里写图片描述

重写和重载的区别:
重载的特点:在同一类中。方法名相同,参数列表不同。
重写的特点:要有继承关系。在子父类中方法的声明相同(方法名和参数列表都相同)。覆盖时,子类方法访问权限不能小于父类方法的访问权限。静态只能覆盖静态。

**部分笔记内容,整个笔记一共27天,打包下载:
网盘地址——链接:http://pan.baidu.com/s/1c1iem6c 密码:8lj8**

0 0