-
1、继承语法规则:class 子类 extends 父类{} 2、子类在方法重写时,优先调用子类方法,要注意返回值类型、方法名、参数类型及个数都要与父类继承的方法相同 3、继承的初始化要先父类再子类,同一个类中,先执行属性的初始话,再执行构造方法的初始化。 4、fina修饰后,变量不能被修改,方法不能被覆盖,属性不能被隐式的初始化(类的初始化属性必须有值),或在构造方法中赋值(但只能选其一) 5、final修饰变量时,该变量的值只能赋值一次,即变为常量 6、super在对象内部使用,可以代表父类对象,访问父类的属性:super.属性,访问父类的方法:super.方法()<br> 7、super的应用须知 a、子类的构造过程中必须调用父类的构造方法,如果子类的构造方法中没有调用父类的构造方法,则系统默认调用父类无参的构造方法。 b、如果要显示调用构造方法,必须在子类的构造方法的第一行 c、如果子类的构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错 8、toString()方法返回对象的哈希码,可以通过重写toString()方法表示出对象的属性 9、equals()方法用来比较对象的引用值是否相同,在比较两个对象的值是否相同时,需要重写查看全部
-
Scanner input = new Scanner(System.in); System.out.println("欢迎使用达达租车系统:"); System.out.println("请问你是否要租车:y/n"); String n =input.next(); Car car[] = { new PassengerCar("奥迪A4", 500, 4), new PassengerCar("马自达6", 400, 4), new PickupCar("皮雪卡6", 450, 4, 2), new PassengerCar("金龙", 800, 20), new Truck("松花江", 400, 4), new Truck("依维柯", 1000, 20) }; if("y".equals(n)){ System.out.println("您可租车的类型及价格目录表:"); System.out.println("序号" + "\t" + "汽车名称" + "\t" + "租金(元/天)" + "\t" + "容量"); for (int i = 0; i < car.length; i++) {//显示可租借的车辆 System.out.println(" " + (i+1) + "\t" + car[i]); } System.out.print("请输入您要租借的汽车数量:"); int m = input.nextInt(); int sum = 0; for (int i = 1; i <= m; i++) { System.out.print("请输入第"+ i +"辆车的序号:"); int k = input.nextInt(); sum = sum + car[k-1].carMoney; } System.out.print("请输入租车天数:"); int t = input.nextInt(); sum = sum * t ; System.out.println("您的账单为:" + sum); }查看全部
-
封装就好比生活中的抽奖箱,如果没有抽奖箱的存在,所有的抽奖号码球都在地上摆着的话,用户就会加以挑选和改动,不能实现抽奖的目的。加了封装就是把所有的号码球都装进了这个抽奖箱,然后给用户一个规定,必须通过入口去取得号码球,而且一次只能取一个。这样一来用户便不能破换抽奖流程,从而达到抽奖的目的。查看全部
-
/*方法的多态*/ /**********************分别有父类【类A】(含有方法a输出a1),子类【类B】含有同名方法a输出a2,和方法b输出b1,子类【类C】**********************/ 类A 对象1 = new 类A();/*创建一个属于类A的对象1,引用指向类A*/ 类A 对象2 = new 类B();/*创建一个属于类B的对象2,引用指向类A*/ 类A 对象3 = new 类C();/*创建一个属于类C的对象3,引用指向类C*/ 对象1 方法a();/*输出a1,引用方法就是指向的类A本来拥有的方法,而对象1属于类A*/ 对象2 方法a();/*输出a2,引用方法就是指向的类A本来拥有的方法,但是它的子类B拥有和它同名的方法而功能又重写了,而对象2属于类B*/ 对象3 方法a();/*输出a1,引用方法就是指向的类A本来拥有的方法,而对象3属于类C,类C就是继承了类A中的方法功能,两者是继承关系,对象3虽然属于类C但是它衔接了类A的功能,所以编号是A_C3*/ 对象2 方法b();/*输出失败,因为对象2的引用功能是属于类A虽然它属于类B,但是方法b是类B中特有的,所以如果要输出的话,就需要创建一个既属于类B,引用又指向类B的对象4{类B 对象4 = new 类B }然后用{对象4 方法b();}才能够输出b2*/查看全部
-
为什么我直接System.out.println(className);就行了啊?查看全部
-
重写: a,父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 b,若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 c,子类函数的访问修饰权限不能少于父类的;查看全部
-
一个类与另一个类的边界如何划分?举个例子来说,手机与平板的边界在哪里?为什么将手机可以称之为手机,而将平板称之为平板?假如答案是通过属性和方法,那么假如平板一样具有打电话和发短信的功能,或者有一天打电话和发短信的功能被这个社会淘汰掉了(事实证明如果不是跟座机连线,这两个功能已经并不是像原来那么必要了),他们之间的差别(边界)还存在吗?查看全部
-
租车系统实现代码7-5 else if(selectedcar instanceof PassengerCar){ passengerCarName +=" "+selectedcar.name; /* * 给记录总载客量的变量加上选中客车的载客量,通过强制类型转换可以让父类访问子类, * 因为我们初始化时,这个位置存放的就是PassengerCar类对象,所有是安全的 */ personCapicity +=((PassengerCar)selectedcar).passengerCapacity; //给记录总金额的变量加上选中租用皮卡车所客车的金额 money += ((PassengerCar)selectedcar).transport(hireDay,((PassengerCar)selectedcar).rent); } } if(personCapicity != 0){ //显示账单中的客车信息 System.out.println("***可载人的车有:"); System.out.println(passengerCarName+" "+"共载人:"+personCapicity+"人"); } if(goodsCapicity != 0){ //显示账单中的货车信息 System.out.println("***可载货的车有:"); System.out.println(GoodsCarName+" "+"共载货:"+goodsCapicity+"吨"); } if(money !=0){ //显示账单中的金额信息 System.out.println("***租车总价格:"+money+"元"); } } }查看全部
-
继承的初始化顺序: 1.初始化父类再初始化子类。 2.先执行初始化对象中的属性,再执行构造方法中的初始化。 父类对象-->属性初始化--->构造方法 子类对象-->属性初始化--->构造方法查看全部
-
滴滴租车代码,应该算是比较简便了的(有每一步的说明),希望对你们有帮助
package lx3;
import java.util.Scanner;
//汽车类
class qc{
private String qcmc;
private int zhujin;
private int rongli;
private int dun;
public qc(){
}
public qc(String qcmc,int zhujin,int rongli,int dun){
this.qcmc=qcmc;
this.zhujin=zhujin;
this.rongli=rongli;
this.dun=dun;
}
public String getqcmc(){
return qcmc;
}
public int getzhujin() {
return zhujin;
}
public int getrongli() {
return rongli;
}
public int getdun(){
return dun;
}
}
//第一辆车的类
class yiqc extends qc{
public yiqc(){
}
public yiqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
//第二辆车
class erqc extends qc{
public erqc(){
}
public erqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
//第三辆车
class sanqc extends qc{
public sanqc(){
}
public sanqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
//第四辆车
class siqc extends qc{
public siqc(){
}
public siqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
//第五辆车
class wuqc extends qc{
public wuqc(){
}
public wuqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
//第六辆车
class luqc extends qc{
public luqc(){
}
public luqc(String qcmc,int zhujin,int rongli,int dun){
super(qcmc,zhujin,rongli,dun);
}
}
public class dididache {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("您是否要租车:1是 0否");
//输入1或0
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
//判断输入的是1还是0
if(i==0) {
System.out.println("感谢你的访问,欢迎下次再来");
}else if(i==1) {
System.out.println("你可租车的类型及其价目表");
//用数组创建多个对象和用多态的引用可以指向子类的知识
qc[] r1= {new yiqc("宝马",500,4,0),new erqc("奔驰",400,4,0),new sanqc("法拉利",450,4,2),new siqc("保时捷",800,20,0),new wuqc("兰博基尼",400,0,4),new luqc("麦凯轮",1000,0,20)};
//用for循环输出租车价目表
System.out.println("序号 汽车名称 租金 容量");
for(int j=0;j<=5;j++) {
System.out.println(j+1+"\t"+ r1[j].getqcmc()+"\t"+r1[j].getzhujin()+"\t"+"载人"+r1[j].getrongli()+" "+"载货"+r1[j].getdun()+"吨");
}
//输入汽车的数量
System.out.println("请输入您要租汽车的数量");
Scanner sc1=new Scanner(System.in);
int x=sc1.nextInt();
//定义一个数组用来储存选车的序号,数组的长度由租车的数量来决定
//用for循环输出选择的车序号
int[] sl=new int[x];
for(int j=1;j<=sl.length;j++)
{
System.out.println("请输入第"+j+"辆车的序号");
Scanner sc2=new Scanner(System.in);
int x1=sc2.nextInt();
sl[j-1]=x1;
}
//输出租车的天数
System.out.println("请输入您要租的天数");
Scanner sc2=new Scanner(System.in);
int y=sc2.nextInt();
//计算账单
System.out.println("您的账单");
int num=0;
for(int z=0;z<sl.length;z++) {
num+=r1[sl[z]-1].getzhujin(); //sl[z]表示sl数组中的选的车序号
//sl[z]-1表示车序号-1;因为车序号是1-6,而sl数组下标要0-5.
}
//输出账单
System.out.println("你一共需要支付:"+(num*y)); //y是租的天数
}
}
}
查看全部 -
//测试类 package jjj; import java.util.Scanner; public class Initail { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("欢迎使用哒哒租车系统"); System.out.println("您是否要租车:1是 0否"); Car[] allcar= {new PassengerCar("奥迪A4", 800, 4),new PassengerCar("大金龙", 500, 20),new Trunk("东风", 800, 20),new Trunk("解放",500, 10),new Pickup("皮卡", 800, 4,5)}; Scanner input =new Scanner(System.in); int choice1=input.nextInt(); if(choice1==1) { System.out.println("您可租的汽车及其报价表:"); System.out.println("号\t汽车名称\t租金\t容量\t"); for(int i=0;i< allcar.length;i++) { System.out.println((i+1)+"\t"+allcar[i].toString()); } } else if(choice1 != 1){ System.out.println("感谢你的使用"); } System.out.println("请输入需要租车的数量:"); int choice2=input.nextInt(); if(choice2<1) { System.out.println("数量有错,请重新输入"); choice2=input.nextInt(); } Car[] newcar = new Car[choice2]; double bills =0; double zhuo =0; int zren =0; for(int i = 0; i < choice2; i++){ System.out.println("请输入第"+ (i+1) + "辆车的序号"); int choice3 = input.nextInt(); if(choice3 > 5 || choice3 < 1){ System.out.println("目标不存在,请重新输入"); choice3 = input.nextInt(); } newcar[i] = allcar[choice3 - 1]; } System.out.println("请输入你要租的天数"); int day = input.nextInt(); for(int i = 0; i < choice2; i++){ bills = newcar[i].getRent() * day + bills; } System.out.println("您的账单信息:"); System.out.println("***可以载人的车有:"); for(int i=0;i<choice2;i++) { if(newcar[i].getManned()!=0) { System.out.print(newcar[i].getName()+"\t"); zren=zren+newcar[i].getManned(); } } if( zren==0) System.out.println("无"); else System.out.println("总载客人数:" + zren + "人"); System.out.println("***可以载货的车有:"); for(int i = 0; i < choice2; i++){ if(newcar[i].getCargo() != 0 ){ System.out.print(newcar[i].getName()+"\t"); zhuo += newcar[i].getCargo(); } } if(zhuo==0) System.out.println("无!"); else System.out.println("总载货数:" + zhuo + "吨"); System.out.println("总金额:"+ bills); } } //Car父类 package jjj; public abstract class Car { private String name; private int rent; private int manned; private double cargo; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRent() { return rent; } public void setRent(int rent) { this.rent = rent; } public int getManned() { return manned; } public void setManned(int manned) { this.manned = manned; } public double getCargo() { return cargo; } public void setCargo(double cargo) { this.cargo = cargo; } } //子类 public class PassengerCar extends Car { public PassengerCar(String name,int rent,int manned) { this.setName(name); this.setRent(rent); this.setManned(manned); } public String toString() { return this.getName()+"\t"+this.getRent()+"/天 "+"\t"+"载人:"+this.getManned()+"\t"; } } package jjj; public class Pickup extends Car { public Pickup(String name,int rent,int manned,double cargo) { this.setName(name); this.setRent(rent); this.setManned(manned); this.setCargo(cargo); } public String toString() { return this.getName()+"\t"+this.getRent()+"/天 "+"\t"+"载人:"+this.getManned()+" 载货:"+this.getCargo()+"吨"+"\t"; } } package jjj; public class Trunk extends Car { public Trunk(String name,int rent,int cargo) { this.setName(name); this.setRent(rent); this.setCargo(cargo); } public String toString() { return this.getName()+"\t"+this.getRent()+"/天 "+"\t"+"载货:"+this.getCargo()+"\t"; } }
查看全部 -
package com.rentcar; public abstract class Car { public int carNumber; public String name; public float price; public int capacity; public int cargo; public int getCarNumber() { return carNumber; } public void setCarNumber(int carNumber) { this.carNumber = carNumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public int getCapacity() { return capacity; } public void setCapacity(int capacity) { this.capacity = capacity; } public int getCargo() { return cargo; } public void setCargo(int cargo) { this.cargo = cargo; } }
public class Passenger extends Car { public Passenger(int carNumber,String name,float price,int capacity) { // TODO Auto-generated constructor stub this.setCarNumber(carNumber); this.setName(name); this.setPrice(price); this.setCapacity(capacity); } @Override public String toString() { return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:"+getCapacity()+"人"+"\t"+"载货:-" ; }}
public class Truck extends Car { public Truck(int carNumber,String name,float price,int cargo) { // TODO Auto-generated constructor stub this.setCarNumber(carNumber); this.setName(name); this.setPrice(price); this.setCargo(cargo); } @Override public String toString() { return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:-"+"\t"+"载货:"+getCargo()+"吨" ; }}
public class pika extends Car { public pika(int carNumber,String name,float price,int capacity,int cargo) { // TODO Auto-generated constructor stub this.setCarNumber(carNumber); this.setName(name); this.setPrice(price); this.setCapacity(capacity); this.setCargo(cargo); } @Override public String toString() { return getCarNumber()+"."+"\t"+getName()+ "\t" +getPrice()+"/天"+"\t\t"+"载人:"+getCapacity()+"人"+"\t"+"载货:"+getCargo()+"吨" ; } }
import java.util.Arrays; import java.util.Scanner; public class RentCar { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("欢迎使用答答租车系统!:\n你是否要进行租车:1是 0否"); Scanner s = new Scanner(System.in); int i=s.nextInt(); if(i==1){ System.out.println("您可租车的类型及其目表:"); System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t\t"+"载人量"+"\t"+"载重量"); Car car1=new Passenger(1,"奥迪A4",500,4); Car car2=new Passenger(2,"马自达6",400,4); Car car3=new pika(3,"皮卡雪6",450,4,2); Car car4=new Passenger(4,"金龙",800,20); Car car5=new Truck(5,"松花江",400,4); Car car6=new Truck(6, "依维柯", 900, 20); System.out.println(car1+"\n"+car2+"\n"+car3+"\n"+car4+"\n"+car5+"\n"+car6); Car[] rentcar={car1,car2,car3,car4,car5,car6}; System.out.println("请输入您要租汽车的数量:"); int n = s.nextInt(); float money1=0; int num=0; int allcargo=0; String [] hrentcar = new String[n]; for(int k=0;k<n;k++){ System.out.println("请输入第"+(k+1)+"辆车的序号"); int t =s.nextInt(); if(t>0&&t<=6){ hrentcar[k]=rentcar[t-1].name; float money2=rentcar[t-1].price; int person=rentcar[t-1].capacity; int wg=rentcar[t-1].cargo; allcargo+=wg; num+=person; money1+=money2; }else{ System.out.println("您输入的信息无效!"); k--; if(k==0)k=0; } } Arrays.sort(hrentcar); System.out.println("请输入租车天数:"); int in = s.nextInt(); float sum =in*money1; System.out.println("您的租车完成,已租车"+n+"辆"); System.out.println("您的账单:"); System.out.println("您租的车有:"+Arrays.toString(hrentcar)); System.out.println("共可载"+num+"人"); System.out.println("共可载货"+allcargo+"吨"); System.out.println("一共需要支付"+sum+"元"); }else if(i==0){ System.out.println("已退出系统,欢迎下次光临"); }else{ System.out.println("您输入的信息无效!请重启"); } } }
查看全部 -
1,static 出现的原因: 类对象拥有的资源是属于自己的是独立的、是不能被共享的。因为在程序中需要共享资源。 所以出现了静态变量。 2,静态变量的用法 1)通过类名直接引用:HelloWorld.var 2)通过对象访问:HelloWorld world=new HelloWorld(); world.var; 结:最好通过类名访问静态变量。 下面归纳一下java用于控制可见性的4个访问修饰词: 1)仅对本类可见--private 2)对所有的类可见--public 3)对本包和所有子类可见--protected 4)对本包可见---默认,不需要修饰词查看全部
-
构造方法 1.使用new+构造方法 创建一个新的对象 2.构造方法是定义在Java类中的一个用来初始化对象的方法 构造方法与类同名且没有返回值 public 构造方法名(){//没有返回值类型;与类名相同;可以指定参数 //初始化代码 } 3.无参的构造方法使用 main(); Telphone phone = new Telphone(); class Telphone: public Telphone(){ System.out.println("Telphone构造方法执行了"); } 4.有参的构造方法 main(): Telphone phone2 = new Telphone(4.0f, 2.0f, 2.0f); class Telphone: public Telphone(float newScreen, float newCpu, float newMem){ screen = newScreen; cpu = newCpu; mem =newMem; } 5.当没有指定构造方法时,系统会自动添加无参的构造方法 6.当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法 7.构造方法的重载:方法名相同,但参数不同的多个方法调用时会自动根据不同的 参数选择相应的方法 8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值查看全部
-
4-3练习第二部分 package com.imooc; import java.util.Scanner; public class Circle extends Shape { final double PI = 3.1415926; Scanner input = new Scanner(System.in);//创建一个Scanner类 @Override public void perimeter() { System.out.println("请输入圆形的半径:"); double radius = input.nextDouble(); double thePrimeter = 2*PI*radius; System.out.println("圆形的周长为:"+thePrimeter); } @Override public void area() { System.out.println("请输入圆形的半径:"); double radius = input.nextDouble(); double theArea = PI*radius*radius; System.out.println("圆形的面积为:"+theArea); } }查看全部
举报