OOP2
1.继承
1.1:使用继承:
1、编写父类,创建公共的属性和方法
2、编写子类使用extends继承父类
3、编写子类中特有的属性和方法
1.2注释事项:
1、super关键字代表父类,只能出现在子类的方法和构造方法中
2、在子类构造方法中使用super调用父类构造方法,必须位于第一句;
3、子类不可以直接访问父类中定义为private的属性和方法 - private的东西是不能被继承的,不能继承构造方法。
1.3:
object是所有类的父类
2.方法的重写
使用:当父类中的方法不能满足子类的需要。
1.方法的重写又称方法的覆盖,一般用于子类根据需要可以对父类中的方法进行重新编写
重写的前提是:必须在继承体系下,也就是必须存在继承关系
2.方法重写的原则:
1、方法名必须相同
2、参数列表必须相同
3、返回值类型相同或者是其子类
4、访问权限相同或不能严于父类
3.重写和重载的区别:
重载:同类同名不同参,与其他无关(同一个类中,方法名,参数列表不同--个数不同,类型不同,顺序不同)
重写:在子类和父类中存在,同名同参同返回值同访问修饰符的方法(返回值可以是其子类,访问修饰符不能比父类更严格)
3.什么是多态:
1、抽象类为什么不能实例化?
2、抽象类可能会存在抽象的方法,抽象方法是不完整的,抽象类中的构造器是用来子类实例化的时候调用的,子类要加载父类的属性和方法。如果被调用,完全没用意义
3、抽象类中是否可以存在构造方法?
4、可以有构造方法。构造方法的作用有两个,一个是初始化变量,另外一个是实例化对象给子类调用
5、抽象类和抽象方法的关系?
6、抽象方法必须在抽象类中去声明,抽象类中可以有抽象方法也可以没用
7、用abstract来修饰一个类时,这个类叫做抽象类,特点是:不能实例化;用abstract来修饰一个方法时,该方法叫做抽象方法。
8、1.抽象方法:在类中没有方法体的方法,就是抽象方法。
2.抽象类:含有抽象方法的类就叫抽象类。
3.抽象类中的抽象方法必须被实现!
4.如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类
9、抽象类能不能继承普通类?
10、可以,只要不是密封类。
11、普通类能不能继承抽象类
12、可以,只要不是密封类。
13、抽象方法和普通方法的的区别?
14、抽象方法不具有方法体 ,而普通方法有方法体
2、抽象方法需要用abstract修饰
15、如果一个类中有抽象方法那么这个类必须声明为抽象类,普通类都可以存在
16、被继承是抽象方法必须要被子类重写普通方法没有要求
17、抽象类和普通类的区别?
2、含有抽象方法的类必须是抽象类,抽象类中也可包含普通的方法,也可以包含静态方法.但是抽象类不可使用static修饰
抽象类可以有构造函数(被private修饰),但是他不能被实例化.普通类也有构造函数,可以被实例化.
抽象类的子类必须实现该类的所有抽象方法,不然该子类也得是抽象类.
抽象类中是否有静态方法?
静态是属于字节码的一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,静态方法只要有字节码存在就可以运行,所以抽象类中可以有静态方法
是否有抽象的静态方法?
不可以
4.抽象类:
2、抽象类和抽象方法的关系
1:有抽象方法的类,一定是抽象类,但抽象类不一定有抽象方法;
2:一个类继承抽象类,必须重写抽象类中的所有抽象方法,如果没有全部重写,那么子类必须声明为抽象类
3:没有抽象构造方法,也没有抽象静态方法
4:抽象类中可以有构造方法,创建子类的实例时调用
1、抽象类和普通类的区别
1、语法不同,抽象类是被abstract修饰的类,普通类一定不能被abstract修饰;
2、抽象类中可以有抽象方法,普通类一定不能有抽象方法;
3、抽象类不能被实例化,普通类可以去实例化调用;- 创建对象
4、抽象类被继承时,子类必须重写全部的抽象方法,或者将子类声明为抽象类;普通类继承普通类的时候,没有任何限制;