javaday3-修饰符,继承和美女选妃完善
修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。
使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。
接口
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
抽象类和接口的区别
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
继承和抽象类
继承
继承可以使用 extends 和 implements 这两个关键字来实现继承。
抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
package DayThree;
public abstract class Animal implements Usb{
boolean hasLeg;
boolean hasHead;
public abstract void say();
public static void main(String[] args){
cat c=new cat();
c.say();
c.sayWhat();
}
}
package DayThree;
public class cat extends Animal {
@Override
public void say() {
System.out.println("iao");
}
@Override
public void sayWhat() {
System.out.println("mio");
}
}
package DayThree;
public class Dog extends Animal {
@Override
public void say() {
System.out.println("wang");
}
@Override
public void sayWhat() {
System.out.println("wan");
}
}
package DayThree;
public interface Usb {
void sayWhat();
}
美女选妃
import com.sun.javafx.collections.MappingChange;
import java.util.*;
public class BadWomen {
//得到三个美女
void getwomen(){
List<Integer>heights=new ArrayList<>();
List<Integer>weights=new ArrayList<>();
Scanner input=new Scanner(System.in);
for(int q=1;q<4;q++){
System.out.println("请输入第"+q+"人的身高");
int h=input.nextInt();
heights.add(h);
System.out.println("请输入第"+q+"人的体重");
int w=input.nextInt();
weights.add(w);
}
System.out.println(heights);
System.out.println(weights);
Map<String,Integer>map=getHightWeightAvg(heights, weights);
int avgH=map.get("avgH");
int avgW=map.get("avgW");
System.out.println("平均身高:"+avgH);
System.out.println("平均体重:"+avgW);
int i=1;
int j=1;
int a;
if(avgH>150&&avgW<50){
System.out.println("总体合格");
}
else{
System.out.println("不合格");
}
for(int n=0;n<3;n++){a=n+1;
if(heights.get(n)>150&&weights.get(n)<50){
System.out.println("第"+a+"位合格");
}
else {
System.out.println("第"+a+"位不合格");
}
}
for(int w:weights){
if(w>avgW){System.out.println("第"+j+"位体重合格");}
else{
System.out.println("第"+j+"位体重不合格");
}j++;
}
for(int h:heights){
if(h>avgH){System.out.println("第"+i+"位身高合格");}
else{
System.out.println("第"+i+"位身高不合格");
}i++;
}
}
//计算身高体重之和,平均值
//Map<String,Integer>map=new HashMap<>();
Map<String,Integer> getHightWeightAvg (List<Integer> hights ,List<Integer> weights){
int sumH=0;
for(int h:hights){
sumH=sumH+h;
}
int sumW=0;
for(int w:weights){
sumW=sumW+w;
}
int avgH=sumH/3;
int avgW=sumW/3;
HashMap<String, Integer> map = new HashMap<>();
map.put("avgH",avgH);
map.put("avgW",avgW);
return map;
}
public static void main(String [] args){
BadWomen badwomen=new BadWomen();
badwomen.getwomen();
}
}
里面还有一些逐个比对的语句
下面是结果图