今天主要学习的内容是继承、多态
接口:1.接口的定义
2.基础接口的使用
3.内部比较器comparable和compareTo和外部比较器的使用
4.网络通信基础
什么时候需要方法重写 @override?
当父类不能满足子类,子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写
方法重载的缺点:
1、方法重载太多,每个子类都要提供一个
2、每增加一个子类,就需要添加相应的方法
3、不利于后期的拓展
接口也是多态
设计模式一共有23种
继承表达的意思:is a
接口表达的意思:has a
老师下午闲谈:
12年iOS
13 14年Andriod 框架底层用Java写的
14 15年 HTML5 前端
14-16年大数据 也是框架底层用Java写的
上面的语言已经比较稳定了,不建议选择
Java94年诞生,一直到现在也是占据前列
一直在某一门语言中长期深入,3年以上深度学习后就能有比较客观的收获
老师推荐学习的语言首先是Java,然后是Python
怪圈:计算机行业转其他行业,其他行业转计算机
内部比较器的缺点是只能按照一种规则比较,要更改源代码规则
外部比较器
优点:可以进行多种内容的比较
缺点:每次使用都要创建一个对象和创建外部比较器的类
匿名内部类:只需要创建一次
网络通信:Socket
计算机网络:将地理位置不同的具有独立功能的多态计算机及其外部设备通过通信线路连接起来,在网络操作系统、网络管理软件和网络通信协议的管理、协调下,实现资源共享的信息传递的计算机系统
特点:不是Java独有,C、Python等都有
IP:所在的位置
端口:具体的位置。用于区分具体是哪个软件
URL:统一资源定位符
主要学习的是TCP编程和UDP编程
按规模划分:
局域网
城域网
广域网
今天学习的代码
//内/外部比较器的使用并没有完成
import java.util.Comparator;
public class Student implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
// TODO 自动生成的方法存根
// return ((Student) o1).getId() - ((Student) o2).getId();
return o1.id - o2.id;//从小到大排序
}
private int id;
private String name;
private int score;
private String sex;
public Student(int id, String name, int score, String sex) {
super();
this.id = id;
this.name = name;
this.score = score;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + score;
result = prime * result + ((sex == null) ? 0 : sex.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (score != other.score)
return false;
if (sex == null) {
if (other.sex != null)
return false;
} else if (!sex.equals(other.sex))
return false;
return true;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", score=" + score + ", sex=" + sex + "]";
}
}
import java.sql.Array;
import java.util.Arrays;
import java.util.Comparator;
public class Day4_内外部比较器_学生成绩排序 {
public static void main(String[] args) {
Student stu[] = { new Student(001, "sda", 85, "男"), new Student(002, "cas", 75, "男"),
new Student(003, "eaa", 74, "男"), new Student(004, "fas", 91, "男"), new Student(005, "ahe", 78, "男") };
// StuNameCom snc = new StuNameCom();
// Arrays.sort(stu, snc);
// Arrays.sort(stu, snc);
Comparator<Student> snc = new Comparator<Student>() {// 匿名内部类
@Override
public int compare(Student o1, Student o2) {
return o2.getId().compareTo(o1.getId());// 按姓名降序排序
}
};
for (Student student : stu) {
System.out.println(student);
}
}
}