权限修饰符
Java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。
访问权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨
protect ∨ ∨ ∨ ×
default ∨ ∨ × ×
private ∨ × × ×
美女选妃
import java.util.*;
public class BeautifulLeadies {
//得到三个美女
void getLeadies()
{
List<Integer> hights=new ArrayList<>() ;
List<Integer> wights=new ArrayList<>() ;
Scanner inout=new Scanner(System.in);
for (int i=1;i<4;i++)
{
System.out.println("请输入第"+i+"美女身高");
int h=inout.nextInt( );
hights.add(h);
}
Scanner nout=new Scanner(System.in);
for (int i=1;i<4;i++)
{
System.out.println("请输入第"+i+"美女体重");
int h=nout.nextInt( );
wights.add(h);
}
System.out.println(hights);
System.out.println(wights);
// Map<String,Integer> map=getHightwightavg(hights,wights);
// int averageh= map.get("averageh");
//int averagew= map.get("averagew");
//System.out.println("平均身高"+averageh);
//System.out.println("平均体重"+averagew);
Map<String,Integer> map= getHightwightavg(hights,wights);
for(int n=0;n<3;n++)
System.out.println(fun2(hights.get(n),wights.get(n),n));
Map<String,Integer> getHightwightavg=getHightwightavg(hights,wights);
boolean result =getResult(getHightwightavg);
if (result)
System.out.println("都是美女");
else
System.out.println("不是美女");
}
public String fun2(int m,int n,int k){
if (m>170&&n<55){
return "第"+(k+1)+"位是美女";
}else{
return "第"+(k+1)+"位不是美女";
}
}
public boolean getResult(Map<String,Integer> map)
{
int avgh=map.get("averageh");
int avgw=map.get("averagew");
if(avgh>150&&avgw<60)
return true;
else
return false;
}
//计算平均值
// Map<String,Integer> map=new HashMap<>();
Map<String,Integer> getHightwightavg(List<Integer>hights,List<Integer>wights)
{
int sumH=0;
int sumw=0;
for(int h:hights){
sumH=sumH+h;
}
for(int w:wights){
sumw=sumw+w;
}
int averageh;
int averagew;
averageh=sumH/3;
averagew=sumw/3;
Map<String,Integer> map=new HashMap<>();
map.put("averageh",averageh);
map.put("averagew",averagew);
System.out.println(map);
return map;
}
public static void main(String[] args) {
BeautifulLeadies beautifulLadies=new BeautifulLeadies();
beautifulLadies.getLeadies();
}
}
效果呈现
Scanner inout=new Scanner(System.in);
for (int i=1;i<4;i++)
{
System.out.println("请输入第"+i+"美女身高");
int h=inout.nextInt( );
hights.add(h);
}
Scanner nout=new Scanner(System.in);
for (int i=1;i<4;i++)
{
System.out.println("请输入第"+i+"美女体重");
int h=nout.nextInt( );
wights.add(h);
}
这一段代码将固定的数值可以进行人为输入
继承(extends)
什么是继承?
继承是对现实生活中的"分类"概念的一种模拟。
狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承"关系的重要特性:通常简称为"IS_A"关系,UML类图可以这么表示:
继承的语法
class 子类名 extends 父类名 {
……
}
注意:
父类(parent class)和超类(super class):通常指直接上级;
基类(base class):通常指包括直接上级在内的"上级的上级";
例如:
子类自动拥有父类声明为public和protected的成员,这就是继承特性的体现之一。
抽象(abstract)和接口(interface)
抽象类和抽象方法
有abstract修饰的类称为"抽象类",它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象。
在方法前加上abstract就形成抽象方法,只有方法声明,没有实现代码。
示例:
一个抽象类中可以包含非抽象方法和成员变量。包含抽象方法的类一定是抽象类,但是抽象类中的方法不一定是抽象方法。
抽象类的三种"类型"
直接定义了一个抽象方法
继承了一个抽象父类,但没有完全实现父类包含的抽象方法
实现了一个接口,但没有完全实现此接口所包容的抽象方法。
注意:
从抽象类继承的子类必须实现父类的所有抽象方法,否则,它仍然是抽象类。
抽象类不能创建对象,一般用它来引用子类对象。
实例:
Person p;
p = new Employee();
以下模式总是成立的:
抽象类 抽象类变量 = new 派生自抽象类的具体子类();