一、周测总结
1、Java编译出错会继续往下执行
2、大的类型可以存储小的类型,例如 int、double 可以存储char类型
3、数组定义可以是 “类型[] 变量名”或 “类型 变量名[]”,只是后者不建议使用
二、继承
关键字:extends
构造方法无法被继承
私有无法被继承
单继承、提高代码复用性
import com.xiye.bean.Father;
/**
* Create by xiye on 2019/11/20 15:27
*/
public class Demo1_继承 extends Father {
public int num = 20;
public int number = 30;
public static void main(String[] args) {
Demo1_继承 demo = new Demo1_继承();
demo.info();
demo.testVar();
}
// 重写父类方法
@Override
protected void info() {
super.info();
System.out.println("子类方法");
}
public void testVar(){
/*
* 子类变量与父类变量同名时,调用父类变量需要用super调用
* */
System.out.println("子类变量:" + num);
System.out.println("父类变量:" + super.number);
System.out.println("子类变量与父类变量同名:" + number);
}
/*继承:提高代码复用性
*
* 关键字:extends
*
* this()是调用类本身无参构造器
* super()是调用父类无参构造器
* 在一个方法中,this()和super()只能出现一个,并且位于方法体首行
*
* 子类无法继承父类的构造器
* 实现化一个类,该类继承一个父类,则该类的构造器默认有super(),即会初始化父类;若该类构造器调用自己其它构造器,则默认super()在最后一个构造器
*
* */
}
package com.xiye.bean;
/**
* Create by xiye on 2019/11/20 15:36
*/
public class Father extends GrandFather {
private String name;
private int age;
public char number = 'a';
public Father() {
this("父类", 33);
System.out.println("父类无参构造器");
}
public Father(String name, int age) {
this.name = name;
this.age = age;
System.out.println("父类满参构造器");
}
protected void info() {
System.out.println("父类方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.xiye.bean;
/**
* Create by xiye on 2019/11/20 15:48
*/
public class GrandFather {
public GrandFather() {
System.out.println("基类构造器");
}
}
三、抽象类
import com.xiye.bean.Person;
/**
* Create by xiye on 2019/11/20 17:09
*/
public class Demo2_抽象 extends Person {
/*抽象
*
* 关键字:abstract
* 抽象类可以有抽象方法,也可以有普通方法
* 有抽象方法的类一定是抽象类,而抽象类中不一定有抽象方法
* 抽象类不能实例化(即不能创建对象),由子类继承抽象类,再实例化子类
* 继承抽象类的子类要实现(重写)抽象类的所有抽象方法
*
* */
public static void main(String[] args) {
// new Person(); //无法实例化抽象类
Demo2_抽象 demo = new Demo2_抽象();
demo.info();
demo.show();
}
// 必须实现/重写抽象类的抽象方法
@Override
public void info() {
System.out.println("实现抽象类的抽象方法");
}
}
package com.xiye.bean;
/**
* Create by xiye on 2019/11/20 17:10
*/
public abstract class Person {
public abstract void info();
public void show(){
System.out.println("抽象类中的·普通·方法");
}
}
四、领红包实例
package com.xiye.bean;
/**
* Create by xiye on 2019/11/20 17:25
*/
public class User {
private String name;
private double money;
public User() {}
public User(String name, double money) {
this.name = name;
this.money = money;
}
public void show() {
System.out.println(name + "当前余额为:" + money);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
package com.xiye.bean;
import java.util.ArrayList;
/**
* Create by xiye on 2019/11/20 17:29
*/
public class Lord extends User {
public Lord() {
}
public Lord(String name, double money) {
super(name, money);
}
public ArrayList<Double> faHongBao(double money, int count) {
if (this.getMoney() < money) {
System.out.println(this.getName() + "您当前余额不足。。。");
return null;
}
if (count < 0) {
System.out.println("红包个数至少一个哦^…^");
return null;
}
double leftMoney = this.getMoney() - money;
// 群主支付后剩余金额
this.setMoney(leftMoney);
// 金额均分装进红包
ArrayList<Double> hbs = new ArrayList<>();
double amount = money / count;
for (int i = 0; i < count; i++) {
hbs.add(amount);
}
return hbs;
}
}
package com.xiye.bean;
import java.util.ArrayList;
/**
* Create by xiye on 2019/11/20 17:29
*/
public class Member extends User {
public Member() {
}
public Member(String name, double money) {
super(name, money);
}
public void kaiHongBao(ArrayList<Double> hbs) {
if (hbs == null) {
System.out.println("红包空空如也>·_·<");
return;
}
if (hbs.size() == 0) {
System.out.println(this.getName() + "你来晚啦!红包已被领完了~~~");
return;
}
double amount = hbs.get(0);
// 成员领红包增余额
this.setMoney(this.getMoney() + amount);
// 红包数量减一
hbs.remove(0);
}
}
import com.xiye.bean.Lord;
import com.xiye.bean.Member;
import java.util.ArrayList;
/**
* Create by xiye on 2019/11/20 17:45
*/
public class Demo3_红包 {
public static void main(String[] args) {
// 群主
Lord lord = new Lord("地主", 1000);
ArrayList<Double> hbs = lord.faHongBao(10000, 2);
lord.show();
// 成员
Member m1 = new Member("农民A", 0);
Member m2 = new Member("农民B", 10);
Member m3 = new Member("农民C", 5);
// 领红包
m1.kaiHongBao(hbs);
m1.show();
m2.kaiHongBao(hbs);
m2.show();
m3.kaiHongBao(hbs);
m3.show();
}
}