一.封装和继承
1.什么是封装
2.什么是继承
3.继承的好处和弊端
4.JAVA类的继承特点
通俗来说一个 儿子只能有一个爹。但爹可以有多个儿子
二.接口
1.接口就是提供对外访问的规则。
就像手机充电器一样,ios系统和安卓系统的充电器接口是不一样的。
2.类实现接口用 implements 表示
3. 抽象类和抽象方法必须用 abstract 关键字修饰
4.接口的子类
接口和接口也可以继承,即一个接口继承另外一个接口,不过这里不是子类与父类关系,这里称为子接口与父接口
注意: 接口、抽象类和类之间要区别开。类和类(包括抽象类)之间才有继承关系,只有具有继承关系的两个类之间才能称为子类和父类
三.面向对象和面向过程的区别
举个把大象放进冰箱里需要几步的例子
面向过程:打开冰箱,先把大象的头放进冰箱中,再把大象的身子和腿放进冰箱里
面向对象:找一个人,让这个人把大象放进冰箱里。这个人就是对象
其实我们人现实生活中都是在面向对象。比如:去饭店吃饭,你只要说明吃什么就可以了,有必要还了解这个菜是怎么做的,是哪里来的,怎么去种这个菜吗?
面向对象也可以说是从宏观方面思考问题,而面向过程可以说是从细节处思考问题。在面向对象中,也存在面向过程。
四.扑克牌小程序
代码如下
public class DouDiZhu {
public static void main(String[] args){
//1.准备一副牌
List<String> poker=new ArrayList<>();
String[] nums={"A","1","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] colors={"黑桃","红心","梅花","方块"};
for(String color:colors){
for(String num:nums){
String pai=color+num;
poker.add(pai);
}
}
poker.add("大王");
poker.add("小王");
System.out.println(poker);
//2.洗牌
Collections.shuffle(poker);
System.out.println(poker);
//3.留3张牌
List<String> dipai=new ArrayList<>();
Random random=new Random();
for (int i=0;i<3;i++){
int index=random.nextInt(poker.size());
String pai=poker.remove(index);
dipai.add(pai);
}
System.out.println(dipai);
System.out.println(poker);
//4.发牌
List<String> aa=new ArrayList<>();
List<String> bb=new ArrayList<>();
List<String> cc=new ArrayList<>();
for(int i=0;i<poker.size();i++){
String pai=poker.get(i);
int mod=i%3;
if(mod==0){
aa.add(pai);
}else if(mod==1){
bb.add(pai);
}else {
cc.add(pai);
}
}
//5.看牌
System.out.println(aa);
System.out.println(bb);
System.out.println(cc);
}
}
程序运行结果如下图
五.美女选妃例子修改
实现代码如下
public class test44 {
public List<BL> getBLs() {
List<BL> bls = new ArrayList<>();
Scanner input = new Scanner(System.in);
for (int i = 1; i < 4; i++) {
System.out.println("请输入第" + i+ "个美女的身高:");
int h = input.nextInt();
System.out.println("请输入第" + i + "个美女的体重:");
int w = input.nextInt();
BL bl=new BL();
bl.setHeight(h);
bl.setWight(w);
bls.add(bl);
}
return bls;
}
public Map<String, Integer> getSumHAndSumW(List<BL> bls) {
//增强for循环
int sumH = 0;
int sumW = 0;
for (BL bl : bls) {
sumH = sumH + bl.getHeight();
sumW = sumW + bl.getWight();
}
System.out.println(sumH+"====="+sumW);
Map map = new HashMap();
map.put("sgh", sumH);
map.put("tzh", sumW);
return map;
}
public Map<String, Integer> getAvg(Map<String, Integer> map) {
int sumH = map.get("sgh");
int sumW = map.get("tzh");
int avgH = sumH / 3;
int avgW = sumW / 3;
Map<String, Integer> avgMap = new HashMap<>();
avgMap.put("pjsg", avgH);
avgMap.put("pjtz", avgW);
return avgMap;
}
public String getResult(Map<String, Integer> avgM) {
int avgH = avgM.get("pjsg");
int avgW = avgM.get("pjtz");
if (avgH > 150 && avgW < 100) {
return "是美女";
} else {
return "不是美女";
}
}
public static void main(String[] args) {
/* a.从浙江工贸选10个美女
null 2019/9/10 16:51:19
b.计算10个美女的身高和 和 体重和
null 2019/9/10 16:51:38
b 计算10美女的平均身高和平均体重
null 2019/9/10 16:52:29
d 判断这批美女是否合格 平均身高》150 平均体重《200*/
test44 test44 = new test44();
List<BL> bls= test44.getBLs();
/*List<Integer> hights = sgtz.get("sg");
List<Integer> wights = sgtz.get("tz");*/
Map<String, Integer> map = test44.getSumHAndSumW(bls);
Map<String, Integer> avgM = test44.getAvg(map);
String s = test44.getResult(avgM);
System.out.println(s);
}
}
程序运行结果如下图