面向对象---继承预习

本文详细介绍了Java中的继承概念,包括子类如何继承父类的属性和方法,以及不能继承的限制。同时,讲解了重写的概念,用于扩展或修改父类的功能。此外,还探讨了抽象类和final关键字的使用,抽象类不能实例化,而final关键字用于禁止继承和方法重写。文章通过示例代码展示了这些概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

1.继承

定义:从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能拓展新的能力

在定义一个类时,如果没有使用extends关键字,那么这个类直接继承object类

继承通过extends关键字来实现

优点:大大缩短开发周期,降低开发费用

2.子类可以从父类中继承

  • 继承public和protected修饰的属性和方法

  • 继承默认权限修饰符friendly修饰的属性和方法

  • 无法继承private修饰的属性和方法

  • 无法继承父类的构造方法,但是可以调用

3.重写

重写的目的:父类的继承方法不能满足子类的需求

重写的定义:在子类中可以对从父类继承的方法进行重写,称为法的重写或覆盖

重写的要求:子类和父类的方法名相同,参数列表相同,返回值类型相同,访问修饰符不能严于父类即 子类的访问修饰符必须大于父类的访问修饰符

在子类中被重写调用父类被重写的方法,可以在子类方法中通过“super.方法名”实现

super.name; //访问直接父类的name属性
super.print(); //访问直接父类的print()方法
super(name); //访问直接父类对应构造方法,只能出现在构造方法中

4.抽象类

用abstract修饰类和方法

抽象类不能实例化

抽象方法只有方发声明,没有方法实现

抽象方法 :public abstract void print();

5.final

final修饰的类不能再被继承

final修饰的方法不能被子类重写

final修饰的变量为常量

5.常见错误

final修饰引用型变量时,变量的值是固定不变的,变量所指向的对象的属性值可以改变

abstract不能和private、static同时修饰一个方法

abstract不能和final同时修饰一个方法和类

父类

package text02;
/**
 * 父类  hero army相同属性和方法
 * @author LENOVO
 *
 */
public class Persion {
	private String name;//昵称
	private int health;//生命值
	
	//无参构造
	public Persion() {
		System.out.println("无参构造");
	}
	//有参构造
	public Persion(String name,int health) {
		this.name="艾琳";
		this.health=1200;
		System.out.println("带两个参数的构造函数");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getHealth() {
		return health;
	}

	public void setHealth(int health) {
		this.health = health;
	}
	
	//展示信息
	public void print() {
		System.out.println("人物的自白:\n我的昵称是" +name+"生命值"+health);
	}
}

子类

package text02;

public class Hero extends Persion{
	private int loyalth;//忠诚度
	private String occupation;//职业
	
	//无参
	public Hero() {
		System.out.println("无参构造");
	}
	public Hero(String name,int health,String occupation) {
		super.setName(name);
		super.setHealth(health);
		this.occupation=occupation;
		System.out.println("这是子类的构造函数");
	}
	
	public int getLoyalth() {
		return loyalth;
	}
	public void setLoyalth(int loyalth) {
		this.loyalth = loyalth;
	}
	public String getOccupation() {
		return occupation;
	}
	public void setOccupation(String occupation) {
		this.occupation = occupation;
	}
	
	public void print() {
		System.out.println("人物的自白:\n我的昵称是" +super.getName()+"  生命值"+super.getHealth()+"  忠诚度"+loyalth+"  职业"+occupation);
	}
}
	
	

package text02;

public class Army extends Persion{
	private String birth;//出生地
	public Army() {
		
	}
	public Army(String name,String birth) {
		super.setName(name);
		this.birth=birth;
		System.out.println("这是子类的构造函数");
	}
	public String getBirth() {
		return birth;
	}

	public void setBirth(String birth) {
		this.birth = birth;
	}
	
	public void print() {
		System.out.println("人物的自白:\n我的昵称是" +super.getName()+" 生命值"+super.getHealth()+" 出生地"+birth);
	}
	
}

测试

package text02;

public class TestYc {
	public static void main(String[] args) {
		Hero hero=new Hero("周瑜",1000,"法师");
		hero.print();
		
		Hero hero1=new Hero();
		hero1.setName("小新");
		hero1.print();
		
		Army army=new Army("黑猫", "华夏");
		army.print();
		
		Persion persion=new Persion("叶真真",500);
		persion.print();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值