Java基础核心面向对象之关键字、抽象类,接口(四)

前言:为了大家更好的学习,我尽量采用图文和代码的形式为大家详细而又简单的讲解,与你相遇倍感荣幸,因为成长历程需要你我一起见证,欢迎大家一起讨论

关键字:

super:

1.	用于调用父类的构造函数;
2.	super()意为不带参数的构造方法;super(a)意为带参数的构造方法
3.	super必须用子类构造带的第一行;

this:

1.	代表本类对象的一个引用,谁调用this所在的方法,this就代表谁;
2.	使用场景:
	2.1用于区同名成员变量和局部变量;
	2.2在定义函数时,该函数要用到调用函数的对象时,因为此时对象还没有建立故此时this代表此对象;
	2.3构造函数调用,这个时候this参数必须作为第一条语句存在;

final

1.	最终类型,用于修饰类方法和变量;
2.	Final修饰类不能被继承,!!-》父类的private成员方法是不能被子类方法覆盖的因为private类型的方法默认为final类型;
3.	Final修饰的方法不能被重写;
4.	Final修饰的变量是一个常量,只能被复制一次;
5.	内部类只能访问final修饰的局部变量
6.	Final不能用于修饰构造方法

Static

作用:用来修饰成员变量和成员函数;
静态的特点:
1.	随着类的加载而加载;
2.	由于对像先存在;
3.	对所有对象所共享,可以直接被类型调用;

	静态的注意事项:
1.	静态方法只能访问静态成员,原因(静态内容随着类加载而加载,他是先进内存)
2.	静态方法中不能使用this,super关键字;
3.	主方法是静态的
a)	static 由于jvm调用main方法的时候,没有创建对像,只能通过类名调用;
b)	void 由于main方法时被JVM调用,不需要返回值;
静态变量和成员变量的区别:
调用方式:
	1.静态变量也称为类变量,可以直接通过类名调用,也可以通过对象名调用;这个变量属于类;
	2.成员变量也称为实例变量,只能通过对象名调用;
	3.储存位置:静态变量储存在静态块;
	4.生命周期:静态块随着类存在消亡;成员随对象;
静态变量的优势与劣势:
	优势:对对象的共享数据进行单独空间存储,减少内存开销;直接被类名调用
	劣势:生命周期过长,随着类的消失而消失;访问权限死板,只能访问静态;
静态使用:
	当所有对象共享某个数据的时候,就把这个成员定义为静态修饰变量;
	当某个方法没有访问该类中的非静态成员,就把这个方法定义为静态修饰;
静态代码块:
	它只执行一次,比main代码先执行,
	执行顺序:静态代码块,构造代码块,构造方法;

抽象类:

概念:
a)	多个类有相同的方法声明,但是方法体不一样,这个时候,我们把方法声明进行抽取;
b)	让子类继承后,自己去实现方法体,没有方法体的方法;我们需要用抽象的关键字abstract抽象标志;
特点:
a)	抽象类和抽象方法都要用abstract修饰得方法修饰
b)	抽象类不能被实例化;
c)	抽象类不一定有抽象方法,但是有抽象方法一定 是抽象类
抽象类中数据的特点;
a)	抽象类中有变量也可以有常量;
b)	抽象类中可以有抽象方法也可以有非抽象方法;
c)	抽象类是一 个类所以他有构造方法;
抽象类中的问题:
a)	抽象类中是否有抽象方法?能不能被实例化?如果不能为什么有构造方法?
	i.	抽象类有构造方法;
	ii.	抽象类不能被实例话;
	iii.	抽象化中的构造方法供子类实例化调用;
b)	抽象关键字abstract 不可以呵那些关键字共存
	i.	private :是由于子类继承不到,所以不能被重写,但是abstract 修饰的方法不能被重写
	ii.	static :如果一个抽象类通过static修饰,这个方法就可以通过类名直接调用,但是抽象方法是没有实体,所以这样可写是没有意义的;
c)	抽象类可以没有抽象方法嘛?如果可以这样的类有用吗?
	i.	抽象方法可以没有方法;
	ii.	没有抽象方法的作用是为了不让别人建立改抽象类的对象;

接口:

概念
当一个类中的方法都是抽象的时候,Java提供了另外一种方式;叫接口 用interface关键字表示,类与接口关系用implements表示
成员特点:
a)	成员变量:是常量,默认修饰public static final;
b)	成员方法:都是抽象的,默认修饰为public abstrat;
关系:
a)	类与类的关系: 都是抽象的,默认修饰为public abstra;
b)	类与接口的关系:
	i.	是实现类的关系。类可以多实现接口,使用implements
	ii.	类在继承时,可以实现多个接口
特点:
a)	是对外暴露的规则;
b)	是功能的扩展;
c)	接口的出现降低了耦合性;
d)	接口可以多实现;
与抽象类的区别:
a)	
	i.	抽象只能被单继承;
	ii.	接口可以多实现,避免了继承的局限型;
b)	
	i.	抽象类的数据特点:
		1.	成员变量可以是常量也可以说变量;
		2.	成员方法可以是abstract 也可以是非abstract;
		3.	有构造方法
	ii.	接口的数据特点:
		1.	成员是常量:默认修饰public static final;
		2.	成语方法:都是抽象方法。都有默认修饰 public abstract
		3.	没有构造方法
c)	
	i.	抽象类中定义的是继承体系中的共性功能;
	ii.	接口中定义的是继承体系中的扩展功能;
d)	
	i.	抽象类被继承的是is a 关系:xx是yy的一种;
	ii.	接口被实现是like a关系:xx像是yy的一种;
另外:博文持续不断更新中,绝对的干货,欢迎大家相互讨论交流
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值