Java中抽象类与方法的重写

1. 抽象类

	关键字:abstract

:用来描述一类具体的事物
抽象类:抽象的、模糊的、不具体的类

在Java的普通类中是不允许多继承的,原因是会出现调用
不明确的问题;

总结:父类中的功能是不能删除的,但其形式是不需要的(没有存在的意义),此时就可以将父类中功能的 具体实现 形式 给删掉;
类的具体实现:创建对象

抽象方法存在的意义是什么?

	用于定义功能,明确该类具备此功能-----规则

特点:

	1.抽象类可以有抽象方法,也可以有非抽象的方法

	2.抽象类中可以有构造器,但是不能创建对象,
	  空间需要由子类对象来开辟

2. 方法的重写

方法重载:在同一个类中,方法名相同,参数列表不同(参数位置、参数个数、参数类型),与返回值无关

方法重写:在继承或实现的关系下,方法名相同,参数列表相同,返回值类型相同,子类的修饰权限要大于或等于父类中的修饰符权限

1. 什么情况下需要重写父类中的类型呢

1.1 子类有自己的特殊实现形式时,此时就可以重写父类中的功能
	如果没有特殊实现就不需要重写(此时重写不是必须的)

2.1 所有的子类都有自己的特殊实现形式时,父类中的功能也就没
    必要有具体的实现,就会变成抽象,那此时,其所有的子类都
    必须重写父类中全部的抽象方法
  1. @Override 称为注解,此处的含义是重写,如果方法上加上了该注解,就代表该方法是从父类中重写过来的(如果此时删除了父类中的该方法,子类就会报错)
// 调用
public class Demo {
	public static void main(String[] args) {
		
	}
}
package day0202;
// 爷爷类(抽象类)
public abstract class Old {
	private String type;
	private String name;
	private String color;
	private int age;
	
	public abstract void eat();
	public abstract void sleep();
	public abstract void weight();
	
	
	
	public void ear() {
		System.out.println("圆圆的");
	}
	public void tail() {
		System.out.println("尾部是卷的");
	}
	
	
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

package ****;
// 父类继承爷爷类
	public class Parent1 extends Old {
		
		private String eyes;
		
		
		@Override
		public void eat() {
			super.ear();
			super.tail();
			System.out.println("吃肉,通过哺乳其他动物");
		}
		
		@Override
		public void sleep() {
			System.out.println("困了就睡觉");
		}
		
		@Override
		public void weight() {
			System.out.println("比较大");
		}
	}

当在继承关系中,子父类中有相同的方法或变量时,程序的编译执行有什么区别

	非静态的方法:执行的时候走的是子类中覆盖后的方法
	非静态的变量:执行的时候走的是子类中的变量
  • 静态的方法:执行的是调用者中的方法

  • 静态的属性:执行的是调用者中的方法

  • 抽象方法不能与哪些关键字共存?

private:private修饰的方法只能在本类中使用,而抽象方法要求必须让子类实现,两者相互矛盾
final:final修饰的方法不能被重写,而抽象方法必须要被重写,
static:static修饰的方法可以通过类名直接调用,而抽象方法是没有方法体的

  • 5
    点赞
  • 1
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值