Java杂谈之抽象类和抽象方法

一直以来,不是很了解abstract关键字的作用,最近才对其有了一些初步的认识和了解。

abstract--抽象,既可以修饰类,也可以修饰方法


以下是一些基本的认识和注意点:

1.抽象方法只有方法的声明

2.抽象方法是让子类必须实现的方法

3.抽象方法不能私有

4.抽象方法只能在抽象类中定义

5.抽象类不可以实例化对象,所以抽象类存在的意义是做父类

6.抽象类里面是可以没有抽象方法的

7.抽象类是可以有构造函数的

以下是具体的实例:

Person--父类

Student--子类

Test--测试


Person类:

package JavaAbstract;

//抽象方法只有方法的声明
//抽象方法是让子类必须实现的方法
//抽象类不可以有对象,不可以实例化,所以抽象类存在的意义是做父类
//抽象类里面是可以没有抽象方法的

public abstract class Person {
	private String name;
	
	//抽象类是可以有构造函数的
	//public Person(){}
	
	public Person(String name)
	{
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	//抽象方法不能私有
	//抽象方法只能在抽象类中定义
	public abstract String getDescription();
	protected abstract String getDescription(int i);
}

Student类:

package JavaAbstract;

public class Student extends Person {
	private String major;

	public Student(String name,String major) {
		super(name);
		this.major = major;
	}

	@Override
	public String getDescription() {
		return this.getName()+"学生的专业是"+this.major;
	}

	@Override
	protected String getDescription(int i) {
		// TODO Auto-generated method stub
		return null;
	}
}

class Employee extends Person
{
	private double salary;

	public Employee(String name,double salary) {
		super(name);
		this.salary = salary;
	}

	@Override
	public String getDescription() {
		return this.getName()+"员工的工资是" + this.salary;
	}

	@Override
	protected String getDescription(int i) {
		// TODO Auto-generated method stub
		return null;
	}
}

Test类:

package JavaAbstract;

public class Test {
	public static void main(String[] args) {
		//Person p = new Person();错误,抽象类不能实例化对象
		Person[] p = new Person[2];
		p[0] = new Employee("张三",1000);
		p[1] = new Student("李四","软件工程");
		
		for(int i=0;i<2;i++)
		{
			String d = p[i].getDescription();
			System.out.println(d);
		}
	}
}

实验截图:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值