面向对象的三大特征

封装

程序设计中追求“高内聚,低耦合”,主要细节由自己操作,不让外部操作;只留少量方法给外部操作;

属性私有,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:查看父子类的树

 
posted @ 2023-02-16 02:11  回家太晚太悲催  阅读(44)  评论(0)    收藏  举报