Java 学习 类的继承

深入理解数据库原理
以实战为基础,以数据库原理为基础,结合实战,深入理解数据库原理。
wangxiaoming


                                                    Java学习   类的继承

  设计类时, 通常使用特殊的方法在子类中

    超类中方法在子类中不合适, 但是子类可以覆盖超类中的方法

 

 类的继承

 子类覆盖父类的方法时,子类中方法的权限不要低于父类方法使用权限。


类的继承:

 子类调用父类方法时候使用 super 关键字

  suoer 关键字中, 另外一个方法是子类构造器中可以调用父类构造器来初始化父类中的私有字段

如果没有在子类构造器中显示调用父类的某个构造器, 那么编译器会自动调用父类的无参数构造函数


继承层次

 未必继承只有一层, 可以有很多侧层

 一个祖类可以有对个子孙继承类

3. 多态和动态绑定

 置换原则, 只要程序需要一个嗲用对象, 那么就可以用一个子类来替换他, 

 一个对象变量可以指向多种实际对象的现象

动态绑定

 在运行时候, 自动选择正确的方法进行调用的现象被称为动态绑定

 看代码:

package hello;

import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.GrayFilter;

public class ManagerTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//设置老板的工资绩效
      Manager boss = new Manager("Mark", 2334.45, 1994,10,23);
      boss.setBonus(500);//设置获得的奖金
      
      //设置一个数组可以实现几个员工的
      Employee[] staff = new Employee[3];
      //下面就是为staff 赋值即可
      staff[0] = boss;
      staff[1] = new Employee("Jack",1212.23, 1995,3,3);
      staff[2] = new Employee("XiaoMing", 4542.212, 2010, 6, 31);
      //上面就是继承的基本使用方法
      for(Employee e : staff)
      {
    	  System.out.println("Name : " + e.getName() + "Salary : " + e.getSalary());
      }
	}
}
class Employee
{
	private double salary;
	private Date hireDay;
	private String name;
	public Employee(String n, double s , int year , int month , int day)
	{
		name = n;
		salary = s;
		GregorianCalendar calendar = new GregorianCalendar(year, month -1, day);
		hireDay = calendar.getTime();
	}
	public String getName()
	{
		return name;
	}
	public double getSalary()
	{
		return salary;
	}
	public Date getHireDay()
	{
		return hireDay;
	}
	public void raiseSalary(double byPercent)
	{
		double  raise = salary*byPercent/100;
		salary += raise;
	}
}
class Manager extends Employee
{
  //类的继承可以为子类添加方法
	private double bonus;
	public Manager(String n, double s, int year ,int month, int day)
	{
		super(n, s,year,month,day);    //继承上面的方法
		bonus = 0;
	}
	public void setBonus(double b)
	{
		bonus = b;
	}
	public double getSalary()
	{
		//获取工资方法进行重写
		double baseSalary = super.getSalary(); // 继承上面的方法加入工资即可
		return baseSalary +bonus;
	}
}


      

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值