继承
继承会出现基类(我们常说的父类) 和导出类(常说的子类)
当继承时子类不仅包括父类的所有成员(尽管有些被private隐藏了) 而且复制了父类的接口,子类具有和父类完全相同的类型
如图所示
可以说圆形是一个几何形
继承后 有两种方法可以使父类和子类出现差异
1.直接在子类中添加新的方法
2.重写父类的方法(overriding 也叫覆盖一般说重写多一点)
继承关键字extends
第一种书中称之为is like a(像是一个)一个热力泵可以加热可以制冷 一个空调只能制冷 热力泵就是is like a 空调 热力泵像是一个空调
第二种 书中称之为is a(是一个)刚才说到一个圆是一个几何图形 只覆盖父类方法没有自己的特殊方法
oop:面向对象编程
今日较大收获
多态向上转型
public class pa {
private String name;
private int age;
protected int i;
public pa(String name, int age, int i) {
super();
this.name = name;
this.age = age;
this.i = i;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int countab(int a, int b) {
return a+b;
}
}//父类pa
public class sa extends pa{
private String aihao;
public sa(String name, int age, int i, String aihao) {
super(name, age, i);
this.aihao = aihao;
}
public String getAihao() {
return aihao;
}
public void setAihao(String aihao) {
this.aihao = aihao;
}
@Override
public int countab(int a,int b) {
return a+b+1;
}
}//子类sa
public static void main(String[] args) {
sa sa = new sa("a", 0, 10, "aaa");
pa pa = new pa("asd", 0, 10);
pa p=new sa("a", 0, 10, "aaa");
System.out.println(p.countab(1, 1));
}
sa向上转型后 变为pa p 使用p调用countad方法 调用的事sa重写过之后的方法 输出结果为3 而不是父类pa的方法
这里多态只是稍微提一下 后面还有单独一章专门讲多态这里先简单记录一下学到的
向下转型
java5之前 list map 都是没有泛型的 默认遍历出来都是object 这样才需要向下转型 向下转型是不安全的除非知道所要处理的对象的类型。
容器(集合)
在编程时候选择需求相应的容器同时还要考虑每个容器做每样功能时候的效率,arraylist与linkedlist相比 随机查询一个数据对arraylist来说只需花费一点时间而对linkedlist来说代价却是昂贵的,越接近尾部查询越慢。但是对于在序列中插入一个元素,linkedlist花费却比arraylist小。
此书确实对编程思想有较大的帮主 对底层理解也有帮主 不可多得的好书 第二天学习到此结束 继续坚持