继承、方法重写、多态
使用继承优化设计将重复代码抽取到父类中
使用继承本类、同包、子类可以访问
方法重写的规则
在继承关系的子类中
重写的方法名、参数、返回值类型必须与父类相同
私有方法不能继承因而也无法重写
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