java2实用教程 第五章 子类与继承 复习

本文深入探讨Java中的继承机制,包括子类如何继承父类的属性和行为,super关键字的使用,以及如何通过extends关键字实现类的继承。同时,文章详细解释了抽象类和抽象方法的概念,以及它们在Java中的应用。

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

用继承可以先定义一个共同属性的一般类,再定义具有特殊属性的子类,子类继承父类属性和行为,并根据需要增加它自己的属性和行为。

关键字extends

java不支持多继承,Object是所有类祖先类,如果一个类没有使用extends关键字,系统默认其为Object子类。

super关键字

  • 用super操作被隐藏的成员变量和方法
    使用场景:子类想使用被子类隐藏的成员变量或方法

  • 使用super调用父类的构造方法
    用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有明显的指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
    -子类不继承父类的构造方法,因此子类的构造方法需要使用super关键字来调用父类构造方法,而且super必须是子类构造方法中的头一条语句

class Student {
	int number;
	string name;
	Student () {}
	Student (int number,String name) {
		this. number = numper;
		this. name = name ;
		System. out.printlr("我的名字是:"+name+"学号是:"+number) ;
	}
}	
class UniverStudent extends Student{
	boolean 婚否;
	UniverStudent (int pumber, String name, boolean b){
		super (number, name) ;
		婚否=b;
		System.out .println("婚否="+婚否);
	}
}	

public class Example5_8 {
	public static void mainstring args([1)(
		UniverStudent zhang new UniverStudent (901,“何晓林",false);
	}
}

final 关键字 可以修饰类、成员变量和方法中的局部变量

final类 不能被继承
final方法 不允许子类重写
局部变量被final修饰 就是常量

成员变量的隐藏

所声明的成员变量的名字和从父类继承来的成员变量的名字相同,子类就会隐藏所继承的成员变量
子类可以通过继承的方法调用隐藏的成员变量

重写—父类某个方法被子类重写,产生自己的功能行为

语法规则:方法的类型和父类方法的类型一致或是父类的方法的类型的子类型,并且方法名字,参数个数,参数类型和父类方法完全相同
目的:隐藏继承的方法,产生自己的功能行为
注意:

  • 重写方法无法操作被子类隐藏的成员变量和方法;
  • 重写方法的类型可以使弗雷方法类型的子类型
  • 重写父类方法不可以降低父类方法的访问权限,但可以提高访问权限
重载

一个类多个方法具有相同的名字,但参数不同。
注意:避免重载发生歧义

对象的上转型对象

用子类创建一个对象并把这个对象的引用放到这个类的对象中

Teacher a;
a = new MathTeacher();

对象a是对象b的上转型对象,对象的上转型对象时子类负责创建的,但上转型对象会失去原对象的一些特点。如下
对象的上转型对象可以操作

  • 隐藏的变量
  • 继承的变量
  • 继承和重写的方法

对象可以操作

  • 继承的变量
  • 新增的变量
  • 继承或重写的犯法
  • 新增的方法

注意:

  • 如果子类重写了父类的静态方法,那么子类的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法
  • 可以将对象的上转型对象再强制转换到一个子类对象
  • 不可以将父类创建的上转型对象引用赋值给子类声明的对象

abstract类和abstract方法(abstract关键字)

  • 对于abstract方法只允许声明,不允许实现(没有方法体)
  • 不允许使用final和abstract修饰同一个方法或类(final类不能被继承,final方法不能被修改)
  • 不允许用static修饰abstract方法(static共享类)
  1. abstract类可以有abstract方法,也也可没有abstract方法
  2. abstract类不能用new运算符创建对象,如果某个非抽象类是某个抽象类的子类,那它必须重写父类的抽象方法,给出方法体
  3. abstract类的子类,如果一个非抽象类是某个抽象类的子类,则必须重写父类的abstract方法
  4. abstract类的对象作为上转型对象
  5. 理解,抽象类创建类的模板,易于扩展维护
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值