300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java-----权限修饰符 重写 super和final关键字 多态 转型和抽象类

java-----权限修饰符 重写 super和final关键字 多态 转型和抽象类

时间:2018-09-17 05:45:08

相关推荐

java-----权限修饰符 重写 super和final关键字 多态 转型和抽象类

权限修饰符

java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要使用他们尽可能的让权限降到最低,从而安全性提高。(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况。)

注意:

以上权限修饰符只能修饰成员(static也只能修饰成员),成员修饰符(成员变量|成员方法)。private的内容不能被继承,因为经过private修饰后表示私有的,所以不能被继承。只有public和default能修饰类,并且default默认出现(也就是不写default,如果写了会报错)。protected的访问权限: 1.同包下的类。2.不同包的子类,并且只能通过子父类关系访问,只有子类中才可以使用。

重写override

重写和重载之间的区别:

重写和重载都是指方法。重载:

1.同一个类中有多个方法。

2.方法名字相同。

3.参数列表不同|方法签名不同。重写:

1.不同的类。

2.继承关系|实现关系。

3.方法签名相同(方法名+参数列表) 。

注意:如果存在方法的重写,在调用的时候调用的是子类中重写的方法。

 重写方法会对父类中被重写的方法进行屏蔽。

如何检查方法的重写:

1.eclipse代码左边会有一个向上的三角符号。

2.强制检查 @Override。

class SiCong extends JianLin{//重写定义父类中某个功能的实现-->方法的重写//@Override强制检查是否重写static JianLin words(){System.out.println("我不在乎我的朋友有钱没钱,反正都没我有钱...");return null;}}

重写的特点

(==) : 方法签名(<=) : 返回值类型 :基本数据类型完全相同,但是引用数据类型:子类<=父类(>=) : 权限修饰符:子类>=父类的权限修饰符

不能被重写:

1.被private修饰的方法不能被重写。

2.被final修饰的方法不能被重写。

3.被static修饰的方法不能被重写。

如果子父类中的同名方法,父类中是静态的,子类中的同名方法要求也要被static修饰。

super关键字

super和this的区别:

this 指代当前new的对象

super 指代父类对象

super用在构造器的首行调用父类中的构造器super的使用

super(参数列表)

必须要使用再首行,如果没有显示调用父类中其他构造器,默认调用父类空构造。super区分子父类中同名的成员

如果不存在子父类中同名成员问题,可以省略,默认之类中的找子类,父类中的找父类。

如果存在子父类中同名成员,并且想要调用父类中的成员,使用super表示父类对象,否则默认子类(就近原则)。 创建对象是先父类后子类先静态后成员

final(关键字)最终的

final修饰变量为常量。final修饰的方法不能被重写。final修饰的类不能被继承(太监类)。final修饰的是引用数据类型,对象的地址不能变,但是可以改变对象的成员。

Object类(老祖宗)

object是java中所有类的根据类,java中的所有类都会直接或者间接的继承自Object类。

toString() 方法

toString()是object的方法之一,当打印一个对象的引用时候,会默认调用对象的toString(),获得一个引用地址。但是一般打印一个对象,其实是想要看对象的所有属性的值,这时候就需要重写toString()方法,自定义输出对象属性的内容,实现打印对象的属性值,不打印地址。默认会打印对象的地址,是因为默认调用Object类型的toString()方法。

equals()方法

equals 和 ==的区别:

== 比较对象的地址的是否相同。equals如果子类中没有重写,默认调用Object类中的equals方法,比较的是地址,但是可以重写,自定义比较规则,按照内容比较对象是否相同。

多态

面向对象的三大特性之一------多态:一种事物的多种形态,多种表示形式。

多态的前提:

类的继承。接口的实现。

多态的最终体现:

父类的引用指向子类的对象。

多态的目的:

父类的引用在如果调用子父类中都有的方法,调用的是子类中重写的方法。子类的新增方法对父类引用不可见。

多态使用成员:

成员变量: 编译运行看父类。成员方法: 编译看父类|类型|左边,运行看子类|找对象|右边。

转型 cast

java是一门强类型的语言。

向上转型:(自动类型提升)

孔子装爹案例:

孔子类 class KongZi{int age=25;void teach(){论语};void play(){吃鸡}}

孔子爹类 class KongZiDie{int age=45;void teach(){做生意}}

有一个人来请孔子爹授课,孔子爹外出游玩,孔子化妆装成孔子爹 的样子去授课。

KongZiDie zi=new KongZi(); --化妆–>向上转型,小范围类型->子类,大范围类型–>父类

zi.teach(); 真实去的人是孔子,所以讲的还是论语。向下转型:(强制类型转换)

目的:和学生一起玩吃鸡,使用子类独有的功能。

卸妆: 从孔子爹类型变成孔子类型,大范围(父类)->小范围(子类)

小范围类型 引用=(小范围类型)大范围引用;

KongZi kong=(KongZi)zi;

kong.play();

经过向下转型变成子类应用,可以调用子类中新增的方法。

ClassCastException 类型转换异常

instanceof 运算符A instanceof B 判断A引用是否是B类型的对象|是否是B类型子类的对象,如果是返回true,如果不是返回false。编译的时候只检查A和B是否在一条继承连上。

抽象类

抽象类: abstract修饰的类就是抽象类。

抽象方法: 使用abstract关键修饰的方法为抽想法方法。

抽象方法的特点:

没有方法体

必须存在与抽象类中

注意:

抽象类不能实例化。(不能创建对象)抽象方法一定要存在抽象类中。抽象方法一定要被重写才能使用。抽象类中可以存在抽象方法,可以存在实例方法。使用抽象类中的内容:

需要通过子类

具体子类:重写抽象父类中的所有抽想方法+可以按需新增方法。

抽象子类:按需重写抽象方法+按需新增方法。一个抽象方法如果被重写过就不需要再次被重写了,但是也可以重写。abstract不能和private,final,static和native不能一起使用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。