1.包机制:区别于类名的命名空间,一般利用公司域名倒置作为包名(www.baidu.com ——> com.baidu.www)
2.super注意点:
a. super调用父类的构造方法,必须在构造方法的第一个;
b. super必须只能出现在子类的方法或者构造方法种;
c. super 和 this 不能同时调用构造方法;
3. 多态:同一方法可以根据发送对象的不同而采用多种不同的行为方式;
a. 一个类的实际对象是确定的,但是指向这个对象的引用类型可以是任意的(本类、父类、Object类或有关系的类);
b. 对象能执行哪些方法,主要看对象左边的类型;
c. 子类重写父类的方法,多态的时候执行子类的方法;(父类型可以指向子类型,但是不能调用子类独有的方法)
注意事项:
a. 多态是方法的多态,属性没有多态;
b. 子类和父类之间有联系,父类可以强制转换成子类(高转低)(如果父类子类存在转换异常会产生 ClassCastException异常);
c. 存在条件:有继承关系,方法需要重写,父类的引用指向子类(Person p = new Son());
存在以下几种不能使用多态:① static 方法,属于类,不属于实例;② final 常量,属于常量池内;③ private 方法;
4. instanceof:判断一个对象是什么类型;(x instanceof y)能否编译通过取决于是否存在父子关系;
5. 类型转换(引用类型) :子类转成父类不需要强制转换,但是在转换过程中会丢失子类原有的一些方法;父类转子类由于是高转低,需要强制转换;
6. static:
最明显的区别:static 修饰的方法,在引用的时候,不需要实例化对象,直接 类名.方法() 就可以,而不用 static 修饰的普通类,使用的时候需要 new 类名.方法();
匿名代码块、静态代码块(类中使用static { ... });
匿名代码块,类创建的时候就自动创建了,位于构造器之前;一般可以用来赋初值;
静态代码块,类一加载就执行,只执行一次;
静态导入包,import static java.xx.xx.xx;
7. final:被final修饰的类没有子类;
8. 抽象类:
可以认为是一个约束,abstract 方法可以只有方法名字,没有方法的实现;
继承抽象类的类,必须要重写没有实现的abstract方法;除非子类也是抽象类;
extends:java里只能单继承,但是接口可以实现多继承;
抽象类的特点:
a. 有抽象方法,该类必须声明为抽象类;抽象类可以有非抽象方法;
b. 不能实例化抽象类,只可以靠继承抽象类的子类去实现它,抽象类仅仅是一个约束;
9. 接口:接口的本质是契约;interface声明接口;接口必须都要有实现接口中方法的类;
a. 接口中的所有定义都是抽象的 public abstract(默认,因此可以直接写 方法名())
b. 实现接口中的类必须要实现接口中所有的方法:接口 UserService,实现接口的类一般命名为 UserServiceImpl;// public class UserServiceImpl implements UserService { ... } 可以使用 alt + ins 快速生成重写模板;
c. 实现方法的类可以同时实现多个接口,但必须全部实现类中的方法;
d. 接口中定义的属性都是静态常量;(int age = 99;// public static final int age;)
接口的作用:① 是约束;② 定义一些方法,让不同的人实现;③ public abstract ④ public static final ⑤ 接口不能被实例化,因为没有构造方法;⑥ implements 可以实现多个接口 ⑦ 必须重写接口中的方法
标签:java,子类,接口,static,狂神,父类,方法,抽象类,SE From: https://www.cnblogs.com/LinxhzZ/p/16726857.html