继承+多态+抽象类

继承

1. “is-a”关系是继承的一个明显特征

2. java中所有的继承都是公有继承,而没有c++中的私有继承和保护继承

3. java不支持多继承,多继承功能的实现方式用接口来实现

4. 阻止继承:final修饰过的类或方法,不可继承

多态

1. java中,对象变量是多态的。如下:Manager is-a Employee

Employee m = new Manager("brain", 3000); //ok 对象变量是多态的

一个Employee变量既可以引用一个Employee类对象,也可以引用一个Employee类的任何一个子类的对象(Manager),但是这样做后就不可以再用继承子类特有的方法,只能看做是超类Employee的对象了

2. 动态绑定

弄清调用对象方法的执行过程十分重要,如下图所示


抽象类

1. 包含一个或多个抽象方法的类本身必须声明为抽象的;抽象类也可以包含具体数据和具体方法
abstract class Person //抽象类
{
	private String name; //具体数据
	
	public Person(String n) //构造器
	{
		name = n;
	}
	
	public abstract String getDescription(); //抽象方法
	
	public String getName() //具体方法
 	{
		return name;
	}
}
抽象类的抽象方法具体在子类中实现,在接口中可以看到更多的抽象方法
抽象类不能被实例化。可以定义一个抽象类的对象变量,但是只能引用非抽象子类的对象,如下:
Person p = new Student("Brain", "Economics");
抽象类助理解示例程序:
package test;

import java.util.*;

public class Test
{
	public static void main(String args[])
	{
		Person[] people = new Person[2];
		people[0] = new Employee("Bob", 10000, 2017, 6, 28);
		people[1] = new Student("brain", "Economics");
		
		for(Person p: people)
		{
			System.out.println(p.getName() + ", " + p.getDescription());
		}
	}
}

abstract class Person
{
	private String name;
	
	public Person(String n)
	{
		name = n;
	}
	
	public abstract String getDescription();
	
	public String getName()
	{
		return name;
	}
}

class Student extends Person
{
	private String major;

	public Student(String n, String m)
	{
		super(n);
		major = m;
	}
	
	public String getDescription()
	{
		return "a student majoring in" + major;
	}
}

class Employee extends Person
{
	private double salary;
	private Date hireDay;
	
	public Employee(String n, double s, int year, int month, int day)
	{
		super(n);
		GregorianCalendar cal = new GregorianCalendar(year, month-1, day);
		hireDay = cal.getTime();
	}
	
	public String getDescription()
	{
		return String.format("an employee with a salary of $%.2f", salary);
	}
	
	public void raiseSalary(double percent)
	{
		salary *= (1 + percent/100);
	}
}
output:
Bob, an employee with a salary of $0.00
brain, a student majoring inEconomics
发布了137 篇原创文章 · 获赞 51 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/Pop_Rain/article/details/73849249