Java学习第3天
一.接口和抽象类和抽象方法
接口里的方法都是抽象方法
抽象类里既包含了抽象方法又包含了普通方法
包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你是好人,则必须能干掉坏人;如果你是坏人,则必须欺负好人。接口可以多继承。
1.抽象类
public abstract class people {
public abstract void language();
}
2.子类使用抽象类的方法
package dahongying;
public class Chinese extends people {
@Override
public void language() {
System.out.println(“你好”);
}
public static void main(String[]args)
{
Chinese a=new Chinese();
a.language();
}
}
extend为继承,一个子类只有一个父类子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)
接口
[访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {常量定义; 方法定义;}
1.
public interface Usb1 {
void fa();
}
2.interface b1{
void nice();
}
public class Computer implements Usb1,b1{
@Override
public void fa() {
System.out.println("我是大帅哥");
}
public static void main(String[]args)
{
Computer c=new Computer();
c.fa();
c.nice();
}
@Override
public void nice() {
System.out.println("nice");
}
}
二.List的面向对象
package dahongying;
public class BeautifulLady {
int hights;
int wights;
@Override //重写toString方法,使反回身高 体重值而不是地址
public String toString() {
return "BeautifulLady{" +
"hights=" + hights +
", wights=" + wights +
'}';
}
}
package dahongying;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;//导入输入包
public class BeautifulLadies {
void getLadies() {
List ladies = new ArrayList<>();//使容器存储对象而不是单纯的整数
Scanner input = new Scanner(System.in);//进行输入
for (int i = 1; i < 4; i++) {
BeautifulLady beautifulLady = new BeautifulLady();//创造对象
System.out.println("请输入第" + i + "位女孩身高");
int h = input.nextInt();
beautifulLady.hights = h;
System.out.println("请输入第" + i + "美女的体重:");
int w = input.nextInt();
beautifulLady.wights = w;
ladies.add(beautifulLady);//存储对象
}
System.out.println(ladies);//输出容器内容
System.out.println("长度为"+ladies.size());
Map<String,Integer> map=getHighWightAvg( ladies);
for(int n=0;n<3;n++)
standard(ladies.get(n).hights,ladies.get(n).wights,n);
if(result(map))
{
System.out.println("全部美女合格");
}
}
void standard(int n,int m,int k)
{
if(n>160)
{
System.out.println("第"+(k+1)+"位身高合格");
}
else
{
System.out.println("第"+(k+1)+"位身高不合格");
}
if(m<60&&m>0)
{
System.out.println("第"+(k+1)+"位体重合格");
}
else
{
System.out.println("第"+(k+1)+"位体重合格");
}
if(n>160&&m<60&&m>0)
{
System.out.println("第"+(k+1)+"位合格");
}
else
{
System.out.println("第"+(k+1)+"位不合格");
}
}
public boolean result(Map<String,Integer> map){
int ah=map.get("hightaverge");
int aw=map.get("wightaverge");
if(ah>150&&aw>50)
{
return true;
}
else
return false;
}
Map<String,Integer> getHighWightAvg(List<BeautifulLady> ladies ){
int sumH=0;
int sumW=0;
for(int n=0;n<ladies.size();n++)
{
sumW=sumW+ladies.get(n).wights;
}
for(int n=0;n<ladies.size();n++)
{
sumH=sumH+ladies.get(n).hights;
}
Map<String,Integer> map=new HashMap<>();
map.put("hightSum",sumH);
map.put("wightSum",sumW);
map.put("hightaverge",sumH/3);
map.put("wightaverge",sumW/3);
System.out.println("结果为" +map);
return map;
}
public static void main(String[]args)
{
BeautifulLadies beautifulLadies=new BeautifulLadies();
beautifulLadies.getLadies();
}
}
总结
今天我学到了很多,尤其是接口和抽象类的使用让我大开眼界,List的面向对象,我弄了好久才将其搞懂。存储对象而不是普通数据,调用对象里的数据的方式,我要不断练习,才能慢慢熟练起来。