java学习笔记-继承与接口

来源:互联网 发布:企业开淘宝店怎样记账 编辑:程序博客网 时间:2024/06/05 11:32


(一)继承

什么情况下用继承:

当子类和父类出现同样的函数时,子类函数重写(覆盖)父类函数.


覆盖方法:
1.子类覆盖父类,必须保证子类权限大于等于父类.
2.静态只能覆盖静态.
重写和重载
重载:只看同名函数的参数列表.
重写:方法一摸一样.
子父类中的构造函数:
构造函数跟着类名走.在对子类对象进行初始化时,父类的构造函数也会进行.那是因为子类的构造函数默认第一行有一条隐式的语句super(),这个super()会访问父类中空参数的构造函数,而且子类中的所有构造函数默认第一行都是super()
为什么子类一定要访问父类中的构造函数.
因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据如何初始化的.
所以子类在对象初始化时,要先访问一下父类中的构造函数.
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式指定.


子类调用父类的成员函数和构造函数的方式:
成员函数的调用:super.show()
构造函数的调用:super(name);
super语句必须写在第一行.
结论:
子类的多有的构造函数,默认都会访问父类中空参数的构造函数.
因为子类每一个构造函数内的第一行都有一行隐式的super()
当父类中没有空参数的构造函数时,子类必须手动通过super形式来指定要访问父类中的构造函数.
当然,子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数,子类中至少会有一个构造函数访问父类中的构造函数.
父类的构造函数第一行也有一个super语句,父类继承的是object


关于权限关键字和在继承中的作用

public:在任何处都可以调用
private:只能在本类中调用
protected:子类中或者同一个包内使用。
privat也能被子类继承 但是 子类无法访问父类的私有属性 或 方法 
子类继承是继承父类的所有东西  除了构造函数
final:最终,作为一个修饰符.
1,可以修饰类,函数,变量.
2,被fianl修饰的类不可以被继承.为了避免被继承,被子类复写功能.
3,被final修饰的方法不能被复写.
4,被fianal修饰的变量是一个常量只能赋值一次,就可以修饰成员变量,有可以修饰局部变量.
例如:
class A{
  final int x=3;//x的值不能被改变了.
void show(){


  final int y=3;//y的值不能被改变.
}


}
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起一个名字.方便于阅读.
而这个值不需要改变,所以加上final修饰.


抽象类:
当多个类中出现相同功能,但是功能主体不同.

这是可以进行抽取,这时只抽取功能定义,而不抽取功能主体.

抽象类中即能定义抽象方法也能定义非抽象方法

 abstract void sutdy();
抽象类的特点:
1,抽象方法一定在抽象类中
2,抽象方法和抽象类都必须abstract关键字修饰.
3,抽象类不可以用new创建对象,因为调用抽象方法没意义.抽象方法没方法体.
4,抽象类中的抽象方法要被类使用,必须由子类复写起所有的抽象方法后,建立子类对象使用.如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类.
抽象类比一般类多了个抽象函数,抽象类中可以不定义抽象方法,这样做不让该类创建对象.
抽象类不可以实例化.




(二)接口


当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示.
class用于定义类
interface用于定义接口
实现用implements
接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法.
2,接口中的成员都有固定修饰符.
常量:public static final
方法:public abstract;

接口中的成员都是public 的.
接口:是不可以创建对象的,因为有抽象方法.
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化.
接口可以被类多实现
//接口可以多继承
接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
 如果在事物之间有共性就用抽象类,特性就用接口
























 






































0 0
原创粉丝点击