关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的

----继承
1.extends的是继承或者扩展的意思。父类写的是基本(公用)的方法。子类会对父类扩展,添加自己特有的方法
2.在执行子类代码中,子类中有就用子类的,子类中没有他就用(取,存)父类的,保存和设置都是针对父类
3.在运行子类的时候,子类首先要调用父类无参构造方法(不管用不用到),因此父类中一定要有无参构造方法
4.数据都是保存在子类中的,父类没保存,在堆内存也没产生父类的空间。一切东西都是在子类保存的。
5.  当子类中具备和父类一样的方法(方法体不一样)的时候,子类会覆盖父类中的一样的方法 -----方法的重写


---抽象
抽象方法(abstract)的引入:继承的时候,可能出现对父类的重写,现在就有一个问题了,就是我父类的这个方法将来要被好多子类重写,那么我这个父类方法的方法体怎么写呢?
写谁的呢?既然不知道方法体是什么,那我就什么也不写,这样就引出了抽象的概念。

1.抽象方法,没有方法体:public abstract 返回值类型 方法名();
2.抽象方法必须放到抽象类 ,而且该类不能被实例化:public abstract class
3.抽象类必须被继承,而且要重写抽象类中全部的抽象方法(否则子类也是抽象类),创建子类的对象的时候使用
4.抽象类中可以有不抽象的方法

----继承和抽象类之间的关系:
继承是子类与父类之间处在的一种关系:即众多子类继承父类之后,各自重写父类中的方法。
但是,有时候父类中的方法不知道写什么,因为写什么都没用,最终都会被每个子类重写(每个子类重写的结果都不一样),此时父类中的方法体就没用了,这个没有方法体的方法就是个抽象方法,用abstract关键字描述。

----final最终的
final关键字:修饰类,修饰属性,修饰方法
1.在继承中,不想被子类重写的方法就用final修饰
2.修饰类:表示该类不能被继承, 命名规则: public final clsss 类名
3.修饰方法:该方法不能继承,命名规则: public final 返回值类型 方法名
4.修饰变量:注意所有字母大写,单词之间用下划线隔开,命名规则:priavte final String STUDENT_NAME;
5.当类中所有的方法都是final的时候,就能把这个类定义成final,final类(该类)不能被继承,因为这里面所有方法都是最终的方法

猜你喜欢

转载自1601844782.iteye.com/blog/2258397