1.封装;
有接口,只能调用(通过方法),不能修改里面的值(设置为私密)
2.类和对象,类为模板,为抽象的,对象是将类具体化(记住每次都要加new)
类没有设置属性,默认为private
每一个类模板定义了有参的构造器时,一定要定义无参的构造器
3.继承
子类能继承父类所有公共的东西(私有的不能被继承);
只有单继承没有多继承,儿子只能由一个爸爸,但是一个爸爸可以由多个儿子
object类是所有类的源头
this调用的是当前对象的数据
supper调用的是父辈的数据
supper和this的区别
supper一般在子类用要不然就要调用obejct了
supper和this不能同时调用构造函数
4.重写(所有方法都是静非态的)
子类的方法和父类的方法相同(包括返回数据类型,参数列表,要不然就是重载了)
范围可以扩大但是不能缩小
5.多态(为方法的多态,而不是属性的多态)(方法不能是static,final等)
person s=new student (例子)
person为父辈,student为子辈,引用(左边的)必须为高辈,属性(右边)必须为低辈
当子辈写了父辈的方法时,就会实现子辈的方法而不是父辈的方法,对象p能用什么方法取决于引用(左边的)而不是属性(右边的)
6.instanceof(它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型)。
Person person1=new student();
实际上参与计算的还是右边的类型student,不过左边的Person确定的是他的等级,例如Obejct的子辈有Person,person的子辈有Student和Teacher,那么(person1instanceof Teacher)就不会编译就不会报错,如果是Student student1=newStudent(),那么(student1instanceofTeacher)这个编译就会报错,因为Student和Teacher为同一辈,没有子父的关系,总结一句话instance左边的等级大于右边那么就不会报错,否则编译就会报错,instanceof参与计算的类型是右边的子辈(或者就是他自己)那么就返回true,否则返回false