重拾JAVA基础09——继承,super,this,重写,重载

本文介绍了面向对象编程中的继承概念,包括注意事项、super关键字的作用以及构造函数的调用。此外,还探讨了方法的重写与重载,详细阐述了何时使用以及各自的规则。通过示例代码展示了Player、Team、Person和Student类的实例,解释了类之间的关系和方法的实现方式。

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

package day08;
/*
 * 球队--------球员   has a 的关系
 * 
 * 学生--------人      is a 的关系
 * 
 * 继承要注意的事项:
 * 	1.不要为了继承而继承;
 *  2.父类的私有成员变量不可以继承。
 *  3.父类的构造函数不能被继承。
 * 	4.创建子类对象时会先调用父类的构造方法。
 * 
 * super 关键字代表父类空间的引用。
 * super 关键字作用:
 * 	1.字符类存在着同名的成员时,在子类中默认访问子类成员,可以通过super关键字访问指定父类成员。
 * 	2.创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。
 * super关键字调用父类构造方法要注意的事项:
 * 	1.如果在子类的构造方法上没有指定调用父类的构造方法,那么Java编译器会在子类的构造方法上面加上super()
 * 	2.super关键字调用父类的构造函数时,该语句必须是子类构造方法中的第一个语句。
 * 	3.super关键字与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。
 * 
 * super 与 this 的区别:
 * 	1.代表的事物不一致。
 * 		1.super关键字代表的是父类空间的引用;this关键字代表的是所属函数的调用者对象。
 * 	2.使用前提不一致。
 * 		1,super关键字必须有继承关系才能使用;this关键字不需要存在继承关系
 * 	3.调用构造函数的区别
 * 		1.super是调用父类的构造函数;this是调用本类的构造函数。
 * 
 * 
 * 
 */

class Player{
	int num ;
	 
	String name ;
	
	public Player(int num, String name){
		this.num = num;
		this.name = name;
	}
	
	public void run(){
		System.out.println("Player is running...");
	}
	
}

class Team{
	String name;
	
	Player p1;
	
	Player p2;
	
	Player p3;
	
	public void startGame(){
		System.out.println(name+"begin...");
	}
	public Team(String name,Player p1,Player p2,Player p3){
		
	}
}

class Person{
	String name = "@13";
	
	public Person( ){
		System.out.println("Person 的构造方法被调用了...");
	}
	
	public  void  eat(){
		System.out.println(name + "在吃饭...");
	}
}

class Student extends Person{
	
//	String name ;
//	
	public Student(){
		System.out.println("Student 的构造方法被调用了...");
	}
	
	public void study(){
		System.out.println(name+"在学习...");
	}
	
}


public class Demo4 {

	public static void main(String[] args) {
//		Player p1 = new Player(11,"Ivering");
//		Player p2 = new Player(23,"James");
//		Player p3 = new Player(30,"Curry");
//		Team t = new Team("Laker",p1,p2,p3);
		Student s = new Student();
		s.study();
	
	}

}

package day08;



/*父类的功能无法满足子类的需求。
 * 
 * 方法重写:子父类出现同名的函数。
 * 什么时候要使用方法的重写?父类功能无法满足子类需求时。
 *
 * 方法重载:在一个类中存在两个或者两个以上的同名的函数,称为方法重载。
 * 
 *方法重写要注意的事项:
 *	1.方法名与形参列表必须一致。
 *	2.方法重写时,子类的权限必须大于等于父类的权限。(子类的交际圈应该大于父类的交际圈)
 * 	3.方法重写时,子类的返回值类型范围,必须小于或等于父类的返回值类型。(鱼代表不了全体动物,fish类不能返回一个animal类)
 * 	4.方法重写时,子类抛出的异常类型范围,要小于或者等于父类抛出的异常类型。(若大于父类的异常类型,就会超出异常处理的范围)
 * 
 * 方法重载要求:
 * 1.函数名要一致
 * 2.形参列表不一致(形参的个数或形参的类型不一致)
 * 3.与返回值类型无关。
 */

class Fu{
	String name;
	
	public Fu(String name){
		this.name = name;
	}
	public void eat(){
		System.out.println(name+"eat tomato...");
	}
}
class Zi extends Fu{
	String num;
	public Zi(String name){
		super(name);
	}
	public void eat(){
		System.out.println("吃1...");
		System.out.println("吃2...");
		System.out.println("吃3...");
		System.out.println("吃4...");
		
	}
	
}


public class Demo6 {

	public static void main(String[] args) {
		Zi z = new Zi("big head son...");
		z.eat();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值