抽象类,接口,常量--随笔

1、抽象类

1.1 案例:

//父类
public class Person {
   
	private String name;
	private int age;
	public void eat() {
   
		System.out.println(this.age+"的"+this.name+"在吃饭");
	}
}
public class Student extends Person{
   
    //重写父类的方法
    public void eat() {
   
		System.out.println("成绩为" + this.score + "分的" + this.getName() + "学生" + "正在吃学生餐");
	}
}
public class Teacher extends Person{
   
    //重写父类的方法
    public void eat() {
   
		System.out.println("工资为" + this.salary + "元的" + this.getName() + "老师" + "正在吃工作餐");
	}
}

在上面的案例中,两个子类都重写了父类的eat方法。那么父类定义的方法是否还有意义?

①父类的方法的申明是不能去掉。

②父类的方法实现没有意义。

这时我们希望,父类只提供方法的申明,不提供方法的实现(不写方法体)。

这时就用到了抽象方法

所有的抽象方法都是使用abstract修饰。

所有的抽象方法都没有方法体。

抽象方法只能写在抽象类或者接口中。

1.2抽象类和抽象方法

抽象?不存在具体的内容(xxx)。

所谓抽象类,就是不存在具体的类的对象。

所有抽象方法就是不存在具体的方法体。

案例:

package com.igeek.demo1;

/**
 * @company 武汉极客营
 *
 * @author www.igeekhome.com
 *
 * 2019年8月26日上午9:42:27
 */
public abstract class Animal {
   

	public abstract void eat();
}

在这里插入图片描述

抽象类不能被实例化。。为什么呢?

因为抽象类中可能存在抽象方法,而抽象方法是没有方法体的,不能执行,所以不能直接创建抽象类对象。

1.3抽象类中可以写什么?

①抽象类中可以写抽象方法。

②抽象类中可以写非抽象方法。

public abstract class Animal {
   

	public abstract void eat();
	
	public void bark() {
   
		System.out.println("动物在吼叫!!!");
	}
}

③抽象类中可以定义属性。

public abstract class Animal {
   
	
	private String name;
	public String getName() {
   
		return name;
	}
	public void setName(String name) {
   
		this.name = name;
	}
}

④抽象类同样有构造方法。抽象类构造方法和非抽象类的构造方法是一样的。

⑤抽象类也可以定义静态方法。

public abstract class Animal {
   
	public static void showClassName() {
   
		System.out.println(Animal.class.getName());
	}
}

抽象类和非抽象的区别:

抽象类不能实例化对象,抽象类中可以定义抽象方法。

1.4 抽象类是用来干啥的?

抽象类不能实例化对象,那么定义的非静态方法又有啥用呢?

抽象类可以继承其他类,同样可以被其他类继承。

抽象类就是用来让其他类继承的。

public abstract class Instruments {
   
	/**
	 * 发出声音
	 * @param o
	 */
	public abstract void vocalization(String o);
	
	public void showMe() {
   
		System.out.println("我是一个乐器!");
	}
}
public class Piano extends Instruments{
   

	public void vocalization(String o) {
   
		System.out.println("钢琴演奏出:"+o);
	}
}

在这里插入图片描述

当一个类继承了一个抽象类,则该类必须实现(重写ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值