权限修饰符| 重写 和 重载之间的区别| super和this的区别|Object类|equals 和 ==的区别|多态|转型 cast的总结

  • 权限修饰符
  •  				       本类					同包类					不同包子类						 不同包下的其他类
    
  •  private			     T
    
  •  default(默认)	         T					   T			 
    
  •  protected		         T					   T						T
    
  •  public			         T					   T						T					                T
    
  • 注意:
  • 以上权限修饰符只能修饰成员(static),成员修饰符(成员变量|成员方法)
  • private的内容不能被继承
  • 只有public和default能修饰类,并且default默认出现
  • protected的访问权限:
  •  			1.同包下的类
    
  •  			2.不同包的子类,并且只能通过子父类关系访问,只有子类中才可以使用
    

==============================================================================================

重写 和 重载之间的区别:

  • 重写和重载都是指方法
  • 重载:
  •  1.同一个类中有多个方法
    
  •  2.方法名字相同
    
  •  3.参数列表不同|方法签名不同
    
  • 重写:
  •  1.不同的类
    
  •  2.继承关系|实现关系
    
  •  3.方法签名相同(方法名+参数列表)
    
  • 如果存在方法的重写,再调用的时候调用的是子类中重写的方法
  • 重写方法会对父类中被重写的方法进行屏蔽
  • 如何检查方法的重写:
  •  1.左边会有一个向上的三角
    
  •  2.强制检查 @Override
    
  • == : 方法签名
  • <= : 返回值类型 :基本数据类型完全相同 引用数据类型:子类<=父类
  • = : 权限修饰符:子类>=父类的权限修饰符

  • 不能被重写:
  •  	1.被private修饰的方法不能被重写
    
  •  	2.被final修饰的方法不能被重写
    
  •  	3.被static修饰的方法不能被重写
    
  •  		如果子父类中的同名方法,父类中是静态的,子类中的同名方法要求也要被static修饰
    

==============================================================================================
super和this的区别:

  • this 指代当前new的对象
  • super 指代父类对象
  • super用在构造器的首行调用父类中的构造器
  •  super(参数列表)
    
  •  必须要使用再首行,没有没有显示调用父类中其他构造器,默认调用父类空构造
    
  • super区分子父类中同名的成员
  •  如果不存在子父类中同名成员问题,可以省略,默认之类中的找子类,父类中的找父类
    
  •  如果存在子父类中同名成员,并且想要调用父类中的成员,使用super表示父类对象,否则默认子类(就近原则)
    
  • 创建对象是先父类后子类
  • 先静态后成员
  • final最终的
  •  final修饰变量为常量
    
  •  final修饰的方法不能被重写
    
  •  final修饰的类不能被继承(太监类)
    
  •  final修饰的是引用数据类型,对象的地址不能变,但是可以改变对象的成员
    

==============================================================================================
Object类(老祖宗)

  • 是java中所有类的根据类
  • java中的所有类都会直接或者间接的继承自Object类
  • toString() 方法
  •  当打印一个对象的引用时候,默认调用对象的toString()
    
  •  当打印一个对象,其实是想要看对象的所有属性的值
    
  •  重写toString()方法,自定义输出对象属性的内容,实现打印对象的属性值,不打印地址,默认打印的对象的地址,因为默认调用Object类型的toString()
    

==============================================================================================
equals 和 ==的区别

  • == 比较对象的地址的是否相同
  • equals如果子类中没有重写,默认调用Object类中的equals方法,比较的是地址,但是可以重写,自定义比较规则,按照内容比较对象是否相同
  • 按照员工身份证号比较,如果身份证号相同就是相同
  • 联系:根据person的id和姓名和薪资比较,如果都相同才是同一个对象

==============================================================================================
面向对象的三大特性之一------多态

  • 多态:一种事物的多种形态,多种表示形式
  • 多态的前提:
  • 类的继承
  • 接口的实现
  • 多态的最终体现:
  • 父类的引用指向子类的对象
  • 多态的目的:
  • 父类的引用在如果调用子父类中都有的方法,调用的是子类中重写的方法
  • 子类的新增方法对父类引用不可见
  • 多态使用成员:
  • 成员变量: 编译运行看父类
  • 成员方法: 编译看父类|类型|左边,运行看子类|找对象|右边

==============================================================================================

转型 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是否在一条继承连 上
    

猜你喜欢

转载自blog.csdn.net/PussyCatsss/article/details/90758613
今日推荐