java继承可以重写方法吗_Java基础篇之继承与方法重写

1.继承的解释:Java语言中继承体现的是一种“is a”的关系,Java仅支持单继承 ,但可以多层继承,即子类继承父类,父类继承祖父类

2.继承的注意事项:

1.子类只能继承父类中非私有的成员变量和成员方法

2.子类不能继承父类的构造方法,但可以通过super关键字去访问父类的构造方法

注意:super的用法和this很像,this代表本类对象的引用,super代表父类存储空间的标识,可以理解为父类引用,可以操作父类的成员

子类中所有的构造方法默认都会先访问父类中无参的构造方法,这是因为子类继承自父类,所以要先初始化父类,这样子类才能用父类中的成员变量,综上,子类的每一个构造方法        第一句肯定是super();调用父类的无参构造方法。如果父类没有无参的构造方法,那么子类的构造方法就会报错,解决办法:

1.加入一个父类的无参构造方法

2.通过使用super关键字去显示的调用父类的带参构造方法,例如父类中没有无参构造方法,但有一个带String name的构造方法:public Person(String name){},此时子类的构造方法第一行可以调用这个父类带参的构造方法:super("张三")。 this(...)和super(...)必须在第一行,避免多次初始化父类。

3.方法重写:子类中出现了和父类中一模一样的方法,包括方法名,参数,返回值类型等都一模一样,

如果子类中的方法和父类中的方法一模一样,就近原则会先使用子类的方法。

4.方法重写的注意事项:父类中的私有方法不能被重写,因为子类无法继承父类的私有方法

子类重写父类中的方法时,访问权限不能更低,,即子类方法的访问修饰符权限必须要大于等于父类的访问修饰符,所以如果父类中的该方法被public修饰,那么子类重写该方法,访问修饰符也必须是public

父类静态方法,子类也必须通过静态方法重写,这与多态相关

5.代码展示:

classPerson2{private int age=10;

String name="张三";int score=90;publicPerson2(){

System.out.println("这是Person2的无参构造方法");

}public voideat(){

System.out.println("人都要吃饭");

}public voidshow(){

System.out.println("人都会思考");

}static{

System.out.println("静态代码块");

}private voidmethod(){

System.out.println(age);

System.out.println(name);

}public voidmethod2(){

System.out.println(age);

System.out.println(name);

}public voidplay(){

System.out.println("我是人,我可以玩");

}private voidexample(){

System.out.println("我是一个样例");

}

}class Student extendsPerson2 {int score=80;

{

System.out.println("构造代码块");

}static{

System.out.println("student的静态代码块");

}publicStudent(){

System.out.println("我是Student的构造方法");

}public voidmethod3(){int score=70;

System.out.println(score);

System.out.println(this.score);

System.out.println(super.score);

}public voidplay(){super.play();

System.out.println("我同时也是一名学生,还需要学习");

}

}public classExtendsDemo {public static voidmain(String[] args) {

Student s=new Student();//静态代码块 student的静态代码块 这是Person2的无参构造方法 构造代码块 我是Student的构造方法

s.eat();//人都要吃饭

s.show();//人都会思考//s.method(); 无法访问父类私有的成员方法//int a=s.age;无法访问父类私有的成员变量

s.method2();//通过父类中的成员方法访问私有成员变量 10 张三

s.method3();//70 80 90

s.play();//我是人,我可以玩 我同时也是一名学生,还需要学习

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值