第12章 继承

本文详细介绍了Java中的类继承、方法重写以及super关键字和final关键字的使用。类继承允许子类共享父类的属性和方法,方法重写用于定制父类的行为。super关键字用于在子类中访问父类的成员,而final关键字则用于防止类被继承和方法被重写。此外,还对比了重写与重载的区别。
摘要由CSDN通过智能技术生成

一、类的继承

一种在保持对象差异性的同时共享对象相似性的复用。
基类(父类、超类),子类(派生类)

// 继承关系用的是extends,关键字左侧是子类,右侧是父类
//子类又叫派生类,父类又叫基类和超类
public class Student extends Person {
	public static void main(String[] args) {
		Student s = new Student();
		// 父类中用private修饰的属性和方法,属于父类中独有的属性和方法
		//是不允许被继承的
//		System.out.println(s.age);
		// 不同包下,子类中,通过继承可以访问由public和protected修
		//饰的属性和方法,但是不能访问private和默认的权限修饰符修饰的成员
		System.out.println(s.age);
		System.out.println(s.name);
	}
}
class Person extends Person01 {
	int age;
	String name;
	public void work() {
		System.out.println("赚钱养家");
	}
}

class Person01{
	int number;
	double score;
}

二、方法的重写(覆写,覆盖)

编写的规则

· 必须有继承,子类才能重写父类的方法
· 重写方法与被重写方法:


· 方法名称相同\
· 参数个数、类型、顺序相同
· 返回类型一致或是协变返回类型
· 协变返回类型:

· private修饰的方法不能被重写
· 子类方法不能缩小父类方法的访问权限
· 非静态方法不能被static修饰的方法重写
· static修饰的方法不能被重写,但static修饰的变量和方法都可以被屏蔽


public class Student01 extends Person02 {
	// 当父亲的方法不能满足子类的时候,我们可以通过方法重写进行解决
	// 方法重写的条件是
	// 1.子类和父类进行继承
	// 2.方法名相同
	// 3.参数的类型、顺序、个数完全一致
	// 4.返回值类型一致或者可协变(子类)
	public static void main(String[] args) {
		Student01 s = new Student01();
		s.work();
	}
}
class Person02{
	public void work() {
		System.out.println("赚钱养家");
	}
}
重写和重载的比较
相同点:

· 方法名相同

不同点:

· 使用条件


· 方法重写必须有继承,在子类中重写\
· 方法重载在同一个类中\

·

三、super关键字

代表本类继承的直接父类当前的对象

用法:

public class Student2 extends Person2{
	String name = "小张";
	// 子类构造方法会默认调用父类中的构造方法,且只能是无参构造方法
	Student2(){
		// 子类能默认调用父类的构造方法是因为编译器默认帮我们加了一个
		//super();
		// 父类中没有无参的构造方法,那么子类中要去显示调用父类中的构造
		// 方法,否则编译报错
		// super的第一种用法,可以在子类的构造方法中调用父类的构造方法
		super(10);
		System.out.println("子类的构造方法");
		// super的第二种用法,当子类跟父类同名时,子类中的属性和方法会将
		//父类中的属性或方法屏蔽掉,我们可以利用super关键字调用父类中的成员
		System.out.println(super.name);
	}
	public static void main(String[] args) {
		Student2 s = new Student2();
		
	}
}
class Person2{
	String name = "张三";
	// 父类中的构造方法属于父类独有的,不能被子类继承
	Person2(int i){
		System.out.println("父类中的构造方法");
	}
}

四、final关键字

· final继承的类不能被继承,因此没有子类
· final修饰的方法不能被重写


· private、static修饰的方法不能被重写,默认为final修饰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值