public class fu {
int numFu =20;
int num =3;
public void methodfu(){
System.out.println(num);
}
}
2)子类
package cn.javase.video.study.jicheng;
public class zi extends fu {
int numZi =32;
int num =1;
public void methodzi(){
System.out.println(num);
}
}
3)父类子类使用
package cn.javase.video.study.jicheng;
/*
父子类使用中,成员变量重名了,则在创建访问对象时有两种访问规则:
1.直接
对象创建时,是哪个类创建的对象,则是哪个累的成员变量,如果没有,则在向父类上找。找不到就报错
2.间接
通过访问成员方法间接访问成员变量
该方法属于谁就优先使用谁,找不到再向上找
*/
public class Extends {
public static void main(String[] args) {
//直接
zi zz =new zi();
int aa=zz.num;//父类子类中都存在num变量,他们重名,因为此对象是子类创建,所以首先
// 在子类中查找,如没找到再去父类
System.out.println(aa);
//间接
zi zi = new zi();
//父类与子类都存在num变量,但现在是通过成员方法间接访问。
// (1)如果是子类方法,则固然先在子类方法中找,找不到在向上找
zi.methodfu();//输出fu
// (1)如果是父类方法,则固然先在父类方法中找。
zi.methodzi();//输出zi
}
}
(4)区分子类方法中的三种重名变量
使用super关键字,指定是父类中的成员变量。
父类 子类 含主函数调用父类子类的类
Int num; int num; 子类 对象 =new 子类();
Public void method (){ 对象.方法();
System.out.println(num);//子类中的局部变量
System.out.println(this.num);//本类中的成员变量
System.out.println(super.num);//父类中的成员变量
b.子类方法的返回值必须是父类方法的子集,也就是小于等于父类的返回值范围;
object类是最高父类,object以下有string int 等等。
c. 子类方法的权限必须大于等于父类方法的权限修饰符:
权限大小:public>protected>(default)>private;
备注:default是不用写的,留白就行。
1.继承 (1)继承格式
(2)继承概述 含义:为了更新或者利用原代码的功能,在不修改源代码的基础上,将源代码的功能继承,在源代码的基础上增加新功能或者方法的重写去更新旧功能。
(3)继承中成员变量的访问特点 1)父类 package cn.javase.video.study.jicheng;
public class fu { int numFu =20; int num =3; public void methodfu(){ System.out.println(num); } } 2)子类 package cn.javase.video.study.jicheng;
public class zi extends fu { int numZi =32; int num =1; public void methodzi(){ System.out.println(num); } }
3)父类子类使用 package cn.javase.video.study.jicheng;
/*
//间接 zi zi = new zi(); //父类与子类都存在num变量,但现在是通过成员方法间接访问。 // (1)如果是子类方法,则固然先在子类方法中找,找不到在向上找 zi.methodfu();//输出fu // (1)如果是父类方法,则固然先在父类方法中找。 zi.methodzi();//输出zi } } (4)区分子类方法中的三种重名变量 使用super关键字,指定是父类中的成员变量。 父类 子类 含主函数调用父类子类的类 Int num; int num; 子类 对象 =new 子类(); Public void method (){ 对象.方法(); System.out.println(num);//子类中的局部变量 System.out.println(this.num);//本类中的成员变量 System.out.println(super.num);//父类中的成员变量
}
(5)继承中成员方法的访问特点 父类。子类已经继承父类,创建新的类后使用父类和子类中重名的方法时: 使用重名方法,是谁的对象(父类或子类)就优先使用谁的方法,若找不到,就向上找,但绝不会向下找,因为父类不知道自己的子类是谁。 (6)继承中方法的覆盖重写 1).重写 : 在继承关系中,方法的名称一样,参数也一样; 2)重载与重写的区别: 两者方法名都相同,但重载的参数必须不同,重写的参数必须相同。 3)使用特点: 创建的是子类对象,则优先使用子类方法,找不到向上找。 4)注意事项 a.必须保证父子类的方法名称相同,参数列表不同; @Override(注解)写在重写方法的前面对方法进行检查,是否符合方法重写规则。@Override也可以不写,只要满足重写要求,也可以重写方法。 @Override的使用: 含义:为了更新或者利用原代码的功能,在不修改源代码的基础上,将源代码的功能继承,在源代码的基础上增加新功能或者方法的重写去更新旧功能。
b.子类方法的返回值必须是父类方法的子集,也就是小于等于父类的返回值范围; object类是最高父类,object以下有string int 等等。 c. 子类方法的权限必须大于等于父类方法的权限修饰符: 权限大小:public>protected>(default)>private; 备注:default是不用写的,留白就行。
(7)super关键字的三种用法
(8)this关键字的三种用法 1)本类方法中,访问本类的成员变量和本类的另一个方法
2)本类方法中,访问本类的另一个构造方法
(9)this,super内存图解 1).Damo创建对象后,因为子类继承了父类,所以new Zi();的堆空间中,有子类的成员方法、成员变量,而子类里又包含父类的成员方法、成员变量。 2).this,super关键字在其特定的范围内寻找对应的成员变量或成员方法。
(10)继承的三个特点 1).java语言是单继承的: 一个类的直接父类只能是唯一的,若一个类有多个直接父类,则会出现混乱。
2)java语言可以多级继承:
3)一个父类可有多个子类,但一个子类只能有一个直接父类: