继承
2.继承的关键字 extends
3.继承其实就是 共性代码的抽取
2.父类的构造方法是不能继承的,因为构造方法的方法名只能是本类的类名,但是可以调用父类的构造方法 super() ===>调用的是父类的无参构造 super(参数1,参数2) ==>调用的父类的有参构造
在继承中获取变量
1.子类在获取变量 如果子类与父类的变量重名: 就是就近原则 获取的时候子类
2.子类获取变量 子类与父类的变量不重名 先获取子类的变量,如果子类没有这个变量会继续往上进行查找,与一直查找到Object 类中 如果还是不能查找到 就会报错
1.子类是不能重写父类私有的方法
2.子类的访问修饰符权限不能严于父类的访问修饰符权限
3.子类的返回值的类型的范围不能大于父类的返回值类型的范围
this与super
1.this ==> 表示当前对象的引用
super ==>表示当前对象的父类对象的引用
构造方法
this() ==>调用的是子类本身存在”构造方法“(其他构造方法)
super() ==> 调用的是父类的构造方法
调用方法:
super.成员方法名()
this.成员方法名()
final
4.final 修饰的方法是不能够被重写
5.使用final修饰的变量 一般称为叫做常量
final 修饰的变量只能赋值一次,不能进行改变
6.final 在修饰引用数据类型的时候 是可以修改其属性值 但是不可以修改其引用数据类型的地址值
作业
7.包、继承、构造函数 创建一个名称为MainPackage的包,使它包含MainClass和MainSubClass 类。MainClass类应当包含变量声明,其值从构造方法中输出。 MainSubClass类从MainClass派生而来。试执行下列操作:创建一个名称 为SamePackage的类,使它导入上述包,并创建一个MainSubClass类的对 象。
MainClass类
public class MainClass {
public String name;
public int age;
public MainClass(String name,int age){
this.age=age;
this.name=name;
System.out.println("名字:"+name+"\t年龄:"+age);
}
}
MainSubClass类
public class MainSubClass extends MainClass{
public String sex;
public MainSubClass(String name,int age,String sex)
{
super(name,age);
this.sex=sex;
System.out.println("名字:"+name+"\t年龄"+age+"\t性别:"+sex);
}
}
main方法
public static void main(String[] args) {
MainSubClass m2=new MainSubClass("袁金",18,"男");
}
8.覆盖、继承 建立一个汽车Auto类,包括轮胎个数,汽车颜色,车身重量、速度等成 员变量。并通过不同的构造方法创建实例。至少要求:汽车能够加速, 减速,停车。再定义一个小汽车类Car,继承Auto,并添加空调、CD等 成员变量,覆盖加速,减速的方法
Auto类
public class Auto {
public int luantai;
public String color;
public int weight;
public int speed;
Auto ( int luantai, String color, int weight, int speed){
this.luantai=luantai;
this.color=color;
this.weight=weight;
this.speed=speed;
System.out.println("轮胎:"+luantai+"\t颜色:"+color+"\t重量:"+weight+"\t速度:"+speed);
}
public void speedup(int i){
speed+=i;
}
public void speeddown(int i){
speed-=i;
}
public void stop(){
speed=0;
}
}
Car类
public class Car extends Auto{
public String kongtiao;
public String CD;
public Car(int luantai, String color, int weight, int speed,
String kongtiao, String CD) {
super(luantai, color, weight, speed);
this.kongtiao = kongtiao;
this.CD = CD;
System.out.println("轮胎:"+luantai+"\t颜色:"+color+"\t重量:"
+weight+"\t速度:"+speed+"\t空调:"+kongtiao+"\tCD:"+CD);
}
@Override
public void speedup(int i) {
System.out.println("小汽车嘟嘟嘟加速了");
super.speedup(i);
System.out.println("当前速度是:"+speed);
}
@Override
public void speeddown(int i) {
System.out.println("小汽车嘟嘟嘟减速了");
super.speeddown(i);
System.out.println("当前速度是:"+speed);
}
@Override
public void stop() {
System.out.println("小汽车停了");
super.stop();
System.out.println("当前速度是:"+speed);
}
}
main方法
public static void main(String[] args) {
Car c1=new Car(8,"yellow",1500,120,
"无","周杰伦");
c1.speeddown(10);
c1.speedup(20);
c1.stop();
}
3、
Car类
public class Car {
//一天的钱
public int onedaymoney;
//车牌号
public String id;
//品牌
String pinpai;
//折扣
static double zk=1;
Car(){}
public Car(String pinpai,String id,int onedaymoney) {
this.pinpai=pinpai;
this.onedaymoney = onedaymoney;
this.id=id;
}
public double price(int days){
double num=days*onedaymoney*zk;
return num;
}
public void play(){
System.out.println();
}
}
CCar类(小轿车)
public class CCar extends Car{
{
System.out.print("轿车:");
}
public CCar(String pinpai,String id,int onedaymoney) {
super(pinpai,id,onedaymoney);
}
@Override
public double price(int days) {
double num;
if (days>7){
num=(super.price(days))*0.9;
}else if(days>30){
num=(super.price(days))*0.8;
}else if(days>150){
num=(super.price(days))*0.7;
}else {
num=(super.price(days));
}
return num;
}
@Override
public void play(){
System.out.println("品牌:"+pinpai+"\t车牌号:"+id+"\t日租金"+onedaymoney);
}
}
Bus类(客车)
public class Bus extends Car{
int send;
{
System.out.print("客车:");
}
public Bus(String pinpai,int send,String id) {
super();
if(send==16){
this.onedaymoney=800;
}else if(send==34){
this.onedaymoney=1500;
}
this.send=send;
this.pinpai=pinpai;
this.id=id;
}
@Override
public double price(int days) {
double num;
if (days>=3){
num=(super.price(days))*0.9;
}else if(days>=7){
num=(super.price(days))*0.8;
}else if(days>=30){
num=(super.price(days))*0.7;
}else if(days>=150){
num=(super.price(days))*0.6;
}else {
num=(super.price(days));
}
return num;
}
@Override
public void play(){
System.out.println("品牌:"+pinpai+"\t座位:"+send+"\t车牌号:"+id+"\t日租金"+onedaymoney);
}
}
main方法
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
CCar c1=new CCar("宝马x6","京26187298",800);
c1.play();
Bus b1=new Bus("金环",34,"京27812937");
b1.play();
CCar c2=new CCar("宝马x10","京26187266",300);
c2.play();
Bus b2=new Bus("金龙",16,"京27812937");
b2.play();
}