java面向对象总结第二部分

九、this和super关键字
super关键字表示超(父)类的意思。this变量代表对象本身。使用this表示当前调用方法的对象引用。
super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)。
this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)。 


使用this和super应该注意:
1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。
3)super()和this()均需放在构造方法内第一行。
4)尽管可以用this调用一个构造器,但却不能调用两个。
5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。


十、抽象类和接口
1.抽象方法
在类中没有方法体的方法就是抽象方法
2.抽象类
含有抽象方法的类就叫抽象类。
抽象类中的抽象方法必须被实现!
如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!
抽象类中的普通方法,可以不必实现。
① 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。
②含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
③抽象类不能被实例化。
④抽象方法只需声明,而不需实现某些功能。
3.接口:
接口是抽象方法的集合。一个类实现一个接口,从而继承接口的抽象方法。
接口不是一个类。写一个界面类似写一个类,但它们是两个不同的概念。类描述对象的属性和行为。接口包含一个类实现的行为。
除非实现接口的类是抽象,接口中的所有方法必须在类中定义。
接口是一个类似的类中的方法如下:
接口可以包含任何数量的方法。
接口被写在同一个 .java 扩展名的文件,并提供相应的文件的名称的接口的名称。
接口的字节码会出现在一个 .class文件。
接口出现在包中,及其相应的字节码文件必须相匹配的包名的目录结构。
然而,一个接口是一类在几个方面有所不同,其中包括:
不能实例化一个接口。
接口不包含任何构造函数.
所有在接口中的方法都是抽象的.
接口不能包含实例字段。可以出现在一个接口的唯一字段必须声明static和final.
接口不是由一个类扩展,它是由类实现.
一个接口可以扩展多个接口.
声明接口:
interface关键字用于声明一个接口。
4.接口和抽象类的区别?
①Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以(就是interface中只能定义方法,而不能有方法的实现,而在abstract class中则可以既有方法的具体实现,又有没有具体实现的抽象方法),这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
②使用抽象类,那么继承这个抽象类的子类类型就比较单一,因为子类只能单继承抽象类;而子类能够同时实现多个接口,因为类型就比较多。接口和抽象类都可以定义对象,但是只能用他们的具体实现类来进行实例化。
一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。




十一、其他一些关键字
1.权限控制:
①.私有权限(private)
private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
②.默认权限(default)
类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
③.受保护权限(protected)
protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
④.公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
有关Java语言的修饰符,需要注意的问题有如下几个:
①.并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。
②.所有修饰符都可以修饰数据成员,方法成员,构造方法。
③.为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,数据成员,如果没有特殊需要,尽可能用private。
④.修饰符修饰的是“被访问”的权限。
 
2、import和package
import:导包
package:打包


3.instanceof  运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。()()


Cat c = new Cat();
c instanceof  Dog  false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值