从零开始的Java学习日志04:类修饰符;初始化块修饰符;方法重写要求;

本文探讨Java中继承机制的细节,特别是方法重写时this与super的使用,及为何特定情况下调用父类与子类方法会出现预期外的结果。深入分析类修饰符、初始化块修饰符以及方法重写的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引

问题
关于继承方面(this,super)
知识点补漏
类修饰符;初始化块修饰符;方法重写要求;
进度总结
(19.02.20;2.01;163/879)

待解决问题

(共1个)

1.问题:

public class Sub extends Base
{

	 public void test()
 	{
  		System.out.println("方法被子类重写");//1号输出
 	}
 
	 public static void main(String[] args) 
	 {
		Sub s=new Sub();
	 }
 
}

class Base extends Base2{

 	public Base()
	 { 
  		test();
 		 super.test();  
 	}
 
 	public void test()
 	{
 		 System.out.println("方法被父类重写");//2号输出
 	}
 
}

class Base2{
 
 	public void test()
 	{
  		System.out.println("方法被父类的父类Base2类重写");//3号输出
 	}
 
}

继承问题:
这里的输出为什么是1号输出和3号输出?不应该是1和2或者2和3吗?

知识点补漏

1.Java中类的修饰符:

默认修饰符:class前面没有加任何的访问修饰符,这个类只能被同一个包中的类访问或引用。

public: 可以被任何对象访问,一个程序的主类必须是公共类。且一个Java文件下只能有一个,且公开类名字须与Java文件名相同。

abstract:抽象类,没有实现的方法,需要子类提供方法实现。

final:非继承类(最终类),不能被其它类继承。

2.Java中初始化块的修饰符:

默认修饰符:每次Java创建对象时,在当前类中,初始化顺序在系统为所有实例变量分配内存之后,与声明实例变量时指定的初始值相同,先于构造器指定的初始值。

static:第一次加载该类时,执行一次。

3.方法的重写需要满足以下三个要求:

1.”==”:方法名、形参列表相同。

2.”<=”:
返回值类型和声明异常类型,子类小于等于父类。

3.”>=”:访问权限,子类大于等于父类。

进度总结

目前Java第6章面向对象
练习耗时出乎意料的长,暴露了我的一些薄弱点,之后几章会放慢速度。
原先写博客的方法太费时间了,而且意义也不大,因此改成这样的。以后回看也更有价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值