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

来源:互联网 发布:oracle导入数据库 编辑:程序博客网 时间:2024/05/29 06:47

 继承、方法重写、多态

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

使用继承
编写父类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;}@Overridepublic double calePrice(int days) {// TODO Auto-generated method stubdouble 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;}@Overridepublic double calePrice(int days) {// TODO Auto-generated method stubdouble 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 stubTest 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
原创粉丝点击