封装
程序设计中追求“高内聚,低耦合”,主要细节由自己操作,不让外部操作;只留少量方法给外部操作;
属性私有,get/set:
用private关键字设置属性为私有属性,用get来获得这个数据,get里面需要返回值;使用set来给这个数据设置值,set需要设置形参;
继承
Object类:在java中,所有的类,都默认直接或者间接继承Object类;
继承是类跟类之间的一种关系;
在继承中,类分为子类(派生类)和父类(基类),子类继承父类,使用extends关键字来表示;
extends:是扩展的意思,所以子类是父类的扩展; 写法:public class Student(子类) extends Person(父类) {};
子类继承了父类,就会拥有父类的全部方法和属性;
父类私有的东西(使用private关键字)无法被继承!!!
继承与封装一起使用,让父类只开放几个方法给子类继承,如get/set,其他封装起来,不让外部操作,使属性私有;
super
super是用来调用父类的构造器,方法和属性的;
写法:super.name;(调用属性) super.print();(调用方法) super();(调用构造器,有无参数,区分有参无参,如果父类没有无参构造器,子类就无法调用);
子类构造器中,自动调用父类的无参构造,属于隐藏代码;
super 只能出现在子类的方法或者构造器中,调用父类的构造器,一定要在代码第一行;
super和this无法同时调用构造方法,因为使用super和this调用构造方法,都需要在代码的第一行,会冲突;
super VS this
代表的对象不同:
this:本身调用者这个对象 super:代表父类对象的应用
前提
this:没有继承也可以使用 super:只能在继承条件才可以使用 构造方法
this():本类的构造 super():父类的构造
重写
静态的方法和非静态的方法 静态方法 : 方法的调用只和左边,定义的数据类型有关;静态的⽅法可以被继承,但是不能重写。如果⽗类中有⼀个静态的⽅法,⼦类也有⼀个完全一样的方法,那么该⼦类的⽅法会把⽗类的⽅法隐藏,⽽不是重写,⽗类的静态⽅法和⼦类的静态⽅法是两个没有关系的⽅法
非静态方法:重写,将父类继承下来的方法,进行修改方法体,其余一直,修改后不影响父类自己的方法
重写:需要有继承关系,子类重写父类的方法!(重写只针对方法,与属性无关)
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大(不能缩小):public>protected>default>private
4.抛出的异常:范围可以被缩小,但是不能扩大:ClassNotFoundException --> Exception(大)
重写,子类的方法和父类必须一致,方法体不同!
为什么需要重写:
1.父类的功能,子类不一定需要,或者不一定满足!
Alt + Insert : override 重写;
多态
多态就是一个实体的多种形态,当不同的对象去完成就是不一样的结果
实际类型和引用类型
一个对象的实际类型是确定的,但是可以指向的引用类型是不确定的;
1.如果引用类型是自己的实际类型,那么能调用的方法都是自己的或者继承父类的! 如:Student s1 = new Student();
2.如果引用类型是实际类型的父类,则可以指向子类,但是不能调用子类独有的方法,只能调用父类继承给子类的方法 如:Person s2 = new Student();
多态的注意事项
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常!ClassCastException!
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son();
无法重写的方法:
1.static 方法:属于类,它不属于实例
2.final 常量
3.private 方法
类型的转换
使用instanceof关键字,可以判断类之间是否存在父子关系
1.父类引用指向子类的对象;
2.把子类转换为父类,向上转型,自动转换,可能丢失自己本来的一些方法; 如:Person obj = new Student();
3.把父类转换为子类,向下转型,强制转换; 如:Student student = (Student) obj; student.go(); 或者((Student) obj).go();
4.方便方法的调用,减少重复的代码!简洁;
idea快捷键
ctrl + alt + v:补全代码
alt + insert:添加构造器,get/set等方法
ctrl + h:查看父子类的树
标签:重写,调用,super,特征,子类,面向对象,父类,方法,三大 From: https://www.cnblogs.com/chj020415/p/17125299.html