封装
什么是封装?
将类的一些信息(比如:类的属性、方法)隐藏在内部,不允许外部程序直接调用,只能通过该类提供的公有的方法(get/set)进行调用。
封装有什么好处?
可以隐藏内部程序实现的细节,减少代码的耦合度。外部成员无法修改已经封装好的程序代码,保护对象信息的完整性,提高程序的安全性。
注释:上图打勾的表示可以调用
继承
java通过extends关键字来实现子类继承父类,java只支持单继承。在java中,所有类直接或间接的继承了java.lang.long.Object类,Object类是所有类的祖先。
子类不能继承父类的有:private所修饰的属性、方法。构造方法。除此以外其他的都继承。
注释:子类不继承父类private修饰的成员,但是如果父类具有的公有方法访问了私有字段,那么子类就可以间接的访问父类的私有成员。
(从内存分析来看:子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类的私有属性和方法,子类是无法直接访到的。即只是拥有,但是无法使用。(这里不考虑Java反射机制))
子类虽然不能继承父类的构造方法,但是能够用super()调用。
1、如果子类没有定义构造方法,则调用父类的无参构造方法。
2、如果子类定义了构造方法,在调用子类对象时,首先执行父类的无参构造方法,然后执行自己的构造方法。
3、如果子类调用父类的有参构造方法,可以通过super(参数)调用所需要的父类构造方法,将该语句放在子类构造方法的第一行。
4、如果某个构造方法调用类中的其他的构造方法,则可以用this(参数)调用,该语句放在构造方法第一行。
什么是多态?
父类引用子类对象并且父类和子类有同名的覆盖方法。这个时候如果通过父类引用调用这个重名方法,就会发生动态绑定。
(注释:将一个父类的引用指向一个子类的对象,称为向上转型(upcastiog),自动进行类型转换.此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法. 此时通过父类引用变量无法调用子类特有的方法。子类对象的数据类型可以自动转型为父类类型,父类对象的数据类型转型为子类类型,则需要强制类型转换.)
发生多态的条件:1、存在继承关系,2、子类重写父类方法,3、父类引用指向子类对象。
使用多态的好处:消除类型之间的耦合关系,实现低耦合。灵活性,可扩充性。可替换性。