java面向对象的基础扫描

"Anything is Object"----万物皆对象!!!

所以程序员一定不能说自己是“单身狗”,“圣斗士”and so on.如果程序员说类似的话,只能说明:面向对象的理解还不到位啊。废话到此为止,现在我们来谈一下老生常谈的”面向对象“:

我们都知道面向对象的四大特征(别吐槽,三大特征也不错):抽象、封装、继承、多态;

面向对象的基础就是类(class),类是对象的模板(理解:动物是一个类,而狮子就是一个对象);

类由属性和行为组成;

1.抽象:把具体的事物抽象成一个类的过程(找出共有的属性和行为的过程);

2.封装:把相同属性和行为组合成一个类的过程;

举个例子:我们把美国,俄罗斯,德国,中国都看做是国家的过程------------抽象;

凡是国家都有国旗,语言,首都,都会打仗。

   public class Country{
	//属性
	private String flag;
	private String captical;
	private String language;
	
	//行为
	public void fight(){
		System.out.println("保家卫国");
	}
}
我们将我们理解的属性和行为写成上述代码的过程--------封装;

其他诸如构造函数,new 对象的讲解请自行Google,或者问度娘,这里不再阐述。

--------------------------------------------------------------------------------------------------------------------

成员:类的属性和行为统称为类的成员;

类的属性-----成员变量;

类的行为-----成员函数;

这里来讨论一下我们在编程过程中容易混淆的地方:

1.访问权限限定符:

java中一共有四种访问权限限定符:public 、private、protected、默认(即我们没有写前三者的情况):

范围publicprotectedprivate默认
同类可见可见可见可见
子类同包可见可见 可见
子类非同包可见可见  
非同包可见   
通过上图的总结:我们可以发现以下规律:

public------完全没有限制;

默认--------相同包下面可以访问;

protected--继承关系下可以访问;(protected关键字用于在继承时控制可见性)

private-----只有本类中可以访问;

这里给出一些建议:

1.不希望外面能够访问的,我们用private;

2.希望在继承关系下可以访问的,我们用protected;

3.任意可以访问的,我们用public;

4.跨包不能访问的,我们不声明权限,即用默认的;

千万要注意:不写权限修饰符和public是有差别的;

2.关键字final和关键字static

(1)static关键字

static关键字是表示静态的;

static声明的成员是属于整个类的,而不属于某个对象;

static修饰的成员和类的生命周期相同(共存亡);

所以static修饰的成员加载优先于普通成员;

用法:

1.当需要记录类的状态时,可以使用静态变量;

2.当类所实现的功能和具体的对象无关时,可以使用static方法;

3.static修饰的方法只能访问static修饰的成员;(从加载顺序上面考虑问题)

4.static成员的两种访问方式:

a.类名.static成员;(这里要注意,不是所有static修饰的成员都可以直接用这种方式访问,它也受访问权限的制约)

b.对象.static成员;(不建议使用)


(2)final关键字 

final的英文意思是:最终的,不可变的;final可以用来修饰类,方法,变量;

final修饰的类-----------该类不可以被继承;

final修饰的变量--------变量值不可以被修改;

final修饰的方法--------该方法不能被重写(覆盖);

总结:static不可以用来修饰类class,而final可以来修饰类;

类的修饰符只有三种:public,final,abstract,当然也可以不写

3.this关键字和super关键字

this关键字表示本类的;

super关键字表示父类的;

需要注意的一点是:他们需要写在第一行;(详情自行搜索,可以留言)

5.重载(overload)和重写(override)

(1)重载的来源是构造函数,因为构造函数的名字必须和类名相同,所以引出了重载的概念;

对于重载,我们只需要知道以下几点即可:

1.重载跟函数的返回值无关;

2.重载的参数不同(类型不同,个数不同,顺序不同)

3.函数名必须相同;

4.也可以用在继承关系中;

(2)重写

重写主要用在继承里面,实现多态功能的;

重写的条件:

返回值,方法名,参数都必须相同;

两者的对比:

重载只要方法名相同,其他都不同;

重写要求返回值,方法名,参数都必须相同;

6.成员变量和局部变量 

成员变量:定义在类中,方法和块之外的,属于整个类,

局部变量:定义在方法中和块中;

两者最大的差别就是,成员变量可以不进行初始化,JVM会自动为其提供默认值;而局部变量不可以;

7.继承:java是全继承,除了构造函数之外;

父类的私有成员也可以继承但不可访问;

为了巩固上述内容,下一篇文章来加强学习。

若文中有不妥或者错误之处,抑或需要交流帮助的,都可以留言,不吝赐教!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值