JAVA 继承、方法重写、多态学习笔记

 继承、方法重写、多态

使用继承优化设计将重复代码抽取到父类中

使用继承
编写父类class  Engineer { 
    //公共的属性和方法
}
编写子类,继承父类
class SoftEngineer extends(只能继承一个父类) Engineer  { 
  //子类特有的属性和方法
}
子类访问父类成员    使用super关键字 
访问父类属性  super.name;
    super代表父类对象
访问父类方法
   super.print();
有些父类成员不能继承
子类不能访问父类private成员 
子类与父类不在同包,使用默认权限的成员
构造方法
访问修饰符protected
可以修饰属性和方法

本类、同包、子类可以访问


方法重写的规则
在继承关系的子类中
重写的方法名、参数、返回值类型必须与父类相同
私有方法不能继承因而也无法重写


abstract也可用于方法——
抽象方法
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
public abstract void play()  没有方法体

static可以用来修饰属性、方法和代码块
static修饰的属性和方法称为类属性(类变量)、类方法
不使用static修饰的属性和方法,属于单个对象,通常称为实例属性(实例变量)、实例方法
static修饰的变量和方法可以通过类名和对象名访问,而不用static修饰的变量和方法只能通过对象名访问


final用法


父类调用子类方法:





练习图形面积







车型 别克商务舱GL8 宝马550i 别克林荫大道 座位 <=16座 >16座

日租费(元/天)     600      500      300      日租费(元/天)800 1500

package Carteacher;

public abstract class Moto {

public  abstract double calePrice(int days);
}
package Carteacher;

public class Bus extends Moto {
	private int seatCount;	
   public Bus() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Bus(int seatCount) {
	super();
	this.seatCount = seatCount;
}
	public int getSeatCount() {
		return seatCount;
	}
	public void setSeatCount(int seatCount) {
		this.seatCount = seatCount;
	}
	@Override
	public double calePrice(int days) {
		// TODO Auto-generated method stub
		double money=0;
		if (seatCount<=16) {
			money=800*days;	
		}else{
			money=1600*days;	
		}
		return money;
	}

	

}

package Carteacher;

public  class Car extends Moto{

	private char type;
	private final char GL8='A';
	private final char BMW='B';
	private final char GM='C';
	public Car() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Car(char type) {
		super();
		this.type = type;
	}
	public char getType() {
		return type;
	}
	public void setType(char type) {
		this.type = type;
	}

	@Override
	public double calePrice(int days) {
		// TODO Auto-generated method stub
		double money=0;
		switch (type) {
		case GL8:
			money=600*days;
			break;
		case BMW:
			money=500*days;
			break;
		case GM:
			money=300*days;
			break;
		default:
			break;
		}
		
		return money;
	}

	
}


package Carteacher;

import java.util.Scanner;

public class Test {

	public double calePrice(Moto mv,int days){
		return mv.calePrice(days);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
Test test=new Test();
Scanner sc=new Scanner(System.in);
System.out.println("请选择车型*1*轿车:*2*客车");
int a=sc.nextInt();
if (a==1) {
	System.out.println("请选择车型  A别克林  B宝马  C别克商");
	String str=sc.next();
	char type=str.charAt(0);
	System.out.println("请输入天数");
	int days=sc.nextInt();
	Car car=new Car(type);
	double money=test.calePrice(car, days);
	System.out.println(type+"轿车"+money+"元租用"+days+"天");
	
	
}else if (a==2) {
	System.out.println("请输入座位数");
	int n=sc.nextInt();
	System.out.println("请输入天数");
	int days=sc.nextInt();
	Bus bus=new Bus(n);
	double money=test.calePrice(bus, days);
	System.out.println(n+"座客车"+money+"元租用"+days+"天");
}

	}

}








作者:冲天支峰               20160529


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值