高校邦Java——6.2覆写
关于this与super调用方法的区别
1.使用this调用方法时,首先会通过本类进行查找,如果本类没有指定的方法存在,才会调用父类中定义的方法
2.使用super调用方法时,会直接查找父类中的方法,即:不会找本类中定义过的方法
覆写:当子类定义了与父类的方法名称相同、参数类型与个数相同、返回值相同的方法时,就称为发生了覆写。但是被覆写的方法不能拥有比父类更为严格的访问控制权限。
public>default>private
如果父类的方法使用的是private,那么子类无法覆写
private定义的内容只能够在本类之中访问。那么在进行方法覆写的时候,如果子类定义的方法在父类之中的访问权限为private,那么子类是不能够进行覆写的。而子类即使按照覆写的要求编写方法,那么对于程序而言,也只是认为子类定义了一个新的操作,即private定义的方法无法被覆写
结论:编写方法尽量用public进行定义
class Person{
public void tell(){System.out.println(“i’m a person”);}
//↓也是被子类覆写
//public void fun()
//{this.tell();}
}
class Student extends Person{
//此方法与父类中完全相同,覆写了tell方法
public void tell(){
//调用父类
//super.tell();
System.out.println(“i’m a student”);}
}
public class personstudenttest {
public static void main(String args[]){
//实例化子类对象
Student stu=new Student();
stu.tell();
}
}一、super与this
1.super调用的是父类的方法或属性,this调用的是本类的方法或属性
2.super调用父类构造方法时必须要放在子类构造方法的首行,而this()调用本类构造方法时,也必须放在构造方法的首行,所以super和this不能同时出现
3.this存在有一个表示当前对象的概念,而super没有这样的概念二、方法重载与方法覆写
1.重载:在同一个类之中定义了方法名称相同,且参数的内容及个数不同的方法
2.覆写:在继承关系之中,子类定义了与父类相同的方法名称、参数类型及个数、返回值。需要考虑权限问题,即:被覆写的方法不能拥有比父类更严格的访问控制权限。6.3 final
不希望一个类被继承时可以使用final关键字
final class A{}
class B extengs A{} //提示错误
——————————————————————————
class A{
public final void fun(){}}
class B extends A
{public void fun()}//提示错误
——————————————————————————
class A{
//定义常量
final int WARNING=10;
public void fun()
{//WARNING=20;}
//报错:不能改变常量值
常量定义使用大写字母,public statics定义的常量叫做全局常量6.4多态性
对象的向上转型:父类名称 对象名称=子类实例化对象;(自动完成)
对象的向下转型:子类名称 对象名称=(类名称 )父类对象;(强制完成)
class A{fun();}
class B extends A{fun();}
A a=new B();
a.fun();//实现的B里的fun();同一个对象根据实例化其子类的不同,同一个方法可以完成不同的功能
class A{fun;}
class B extends A{fun;}//覆写
A a=new B();
//实例化的是B里的fun向下转型:
B b=(B) a;A a=new B();
B b=(B) a;
b.fun; //执行B类中的fun
——————————————————————————
A a=new A(); //实例化父类对象
B b=(B) a; //向下转型
b.fun();
报错。
结论:在对象发生向下转型操作之前,一定要首先发生对象的向上转型建立好关系后才可以正常使用,关于对象撰写的实际使用情况:
1.向上转型:90%,在大部分情况下使用的全部都是对象的向上转型
2.向下转型:3%,很少会使用向下转型,因为只有在使用子类特殊功能的时候爱会考虑向下转型
3.不转型:7%,String和其他一些有特殊功能的类
A {fun();}
B extends A{fun();funB();}
A a=new B(); //向上转型
a.fun();
B b=(B) a; //向下转型
a.funB(); //不加上面这行会报错关键字:instanceof,作用:判断某一个对象是否为某一个类的实例
对象 instanceof 类 //返回boolean型数据
a instanceof A
java 自己调用自己失败 java调用自己写的方法
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章