1. Object类:所有类的超类或基类
* 一个类没有明确继承某个父类,都默认继承了Object类
*
* Object类的方法:
* equals: 比较两个对象的内存地址
* toString
* public String toString() {
*
return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
}
*
* hashCode:获得到当前对象的Hash值
* getClass:获得到当前对象所属类的字节码文件对象
*
* String类的方法:
* equals:比较两个字符串内容是否相等
* toString:返回的字符串内容
*
* ps:打印一个对象,默认调用toString方法
2. 抽象类:用abstract修饰的类
* 抽象方法:用abstract修饰的方法,没有代码块
*
* 1.抽象类里可以没有抽象方法吗?可以,但是没意义
* 2.抽象类可以创建对象吗?不可以,创建的是一个匿名的子类(匿名内部类)
* 3.抽象类里可以有普通方法吗?可以
* 4.子类继承抽象类,必须要重写父类的抽象方法吗?不一定,如果子类是抽象类,不重写,但是子类是非抽闲类,必须重写
* 5.抽象类有没有构造方法?有构造方法
3. 接口:是特殊的抽象类
* 接口里只有静态常量和抽象方法
* 一个类可以实现多个接口?可以
* 一个接口可以实现多个接口?不可以,一个接口可以继承多个接口
* 接口里面的方法不一定都是抽象的?错,全是抽象方法
* 接口解决了类的单继承问题?是的
* 一个类是否可以继承一个类并同时实现多个接口?可以
* 一个类实现接口,必须实现接口里的抽闲方法吗?不一定,该类如果是抽象类,可以不用实现,交给该类的非抽象子类实现
* 接口可以创建对象吗?不可以
4. 多态:多种形态
1.子类对象指向父类引用
2.实现类对象指向接口的引用
5. 对象转型:
* 向上转型:子类类型转父类类型
* 可以获取父类的属性和方法
* 不可以获取子类的属性和方法
* 但是可以获取子类重写父类后的方法
* Animal an = new Dog();
System.out.println(an.name);
an.method();
* 向下转型(不安全):父类类型转子类类型
* ClassCastException:类型转换异常
6. 应用场景
重写:
父类:别人的类,我们不能随便改动
子类:继承父类,重写觉得不合适的方法
抽象类及抽象方法:
父类:我们编写,觉得有些方法不好准确实现,就把方法设置成抽 闲的,交给子类重写
子类:重写父类的抽象方法
(子类如果是抽象类,可以不重写父类的抽闲方法,
如果子类的子类时非抽象类,就必须重写)
接口:(接口更像一个模板,规定了实现类必须要去实现的内容)
1.之前我们用的常量类,现在改为常量接口
2.如果抽象类只有抽象方法,直接用接口代替
为什么用接口代替?
类与类:单继承关系
类与接口:多实现关系
接口与接口:多继承关系
7.内部类详解
https://www.cnblogs.com/dolphin0520/p/3811445.html