JAVA继承性和重写操作概述

/*

  • 一:继承性的好处:
  • 1 提高了代码的复用性
  • 2 便于功能的拓展
  • 3 为多态性的使用,提供了前提
  • 二:继承性的格式:A extends B{}
  • A:子类,派生类,subclass
  • B:父类,超类,基类,superclass
  • 2.1体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的结构 属性 方法
  • 例:
  • 先声明一个Person父类
public class Person {
	
	private String name;
	private int age;
	private char gender;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
	public void eat() {
		System.out.println("人会吃饭");
		
	}
	public void sleep() {
		System.out.println("人会睡觉");
		
	}
	
}

再声明一个Student子类

public class Student extends Person{
	
	
//	private String name;
//	private int age;
//	private char gender;
	
	public Student() {
		
	}
	
//	public Student(String name, int age, char gender) {
//		this.name = name;
//		this.age = age;
//		this.gender = gender;
//		
//	}

//	public String getName() {
//		return name;
//	}
//
//	public void setName(String name) {
//		this.name = name;
//	}
//	
	
	public void Studying() {
		System.out.println("学生会学习");
	}
	

}

此时在编写Student类时,就不需要再写Person类中有的基本结构,如代码中注释部分,而是可以直接调用父类中的基本方法,如在main函数中new Student后可直接调用父类中的setName和getName方法

Student p2 = new Student();
		
		p2.setName("张三");
		System.out.println(p2.getName());
		p2.Studying();
		
  • 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构
  • 只是因为封装性的影响,使得子类不能直接调用父类的结构而已
  • 2.2 子类继承父类以后,还可以声明自己特有的属性或方法,实现功能的拓展。
  • 子类和父类的关系,不同于子集和集合的关系
  • extends:延展,扩展

  • Student类中的特有方法
public void Studying() {
		System.out.println("学生会学习");
	}
  • 三:java中关于继承性的规定
  • 1,一个类可以有多个子类
  • 2,单继承性:一个类只能有一个父类
  • 3.子父类是相对的概念
  • 4.子类直接继承的类叫直接父类,…间接父类
  • 四:
  • 1.如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
  • 2.所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类
  • 3.意味着,所有的java类具有java.lang.Object类声明的功能。
  • 让你任意new一个对象,然后调用方法,都会出现很多Object类下的方法
  • 五:重写操作
  • 1.重写:子类继承父类以后,可以对父类中同名同参数的方法进行覆盖操作
  • 2.应用:重写后,调用时实际执行的是子类重写父类的方法
  • 3:重写的规定
  •      方法的声明: 权限修饰符  返回值类型  方法名(形参列表){
    
  •      		//方法体
    
  •      }
    
  •  	A:子类重写的方法名和形参列表与父类相同
    
  •  	B: 子类重写的方法的权限修饰符不小于父类被重写的方法权限修饰符
    
  •  	C: 子类中不能重写父类中声明为private的方法
    
  •  	D: 返回值类型:
    
  •  		<<父类被重写的方法返回值类型为void时,则子类重写的方法的返回值只能是void
    
  •  		<<父类被重写的方法返回值类型为A类时,则子类重写的方法的返回值可为A类或A类的子类
    
  •  	E:子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
    

  •  	子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static的(不是重写)
    

*/

写一个Student的子类

public class Doctor extends Student{
	
	String major;
	
	public Doctor() {
		
	}

	public Doctor(String major) {
		
		this.major = major;
	}
	
	public void Studying() {
		System.out.println("医生会治病");
	}
	

在main函数中测试

Doctor p3 = new Doctor("临床");
		
		System.out.println(p3.major);
		p3.Studying();

运行结果如下
在这里插入图片描述
证明了重写后的方法被调用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值