集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都java培训班:Java基础-面向对象

发布者: 成都达内     浏览次数:     发布时间:2020-07-28 11:37:40

Java基础-面向对象,定义:成员变量直接定义在类中;局部变量定义在方法中,参数上,语句中。范围:成员变量在这个类中有效;局部变量只在自己所属的大括号内有效,大括号结束,局...

  一、Java中的成员变量和局部变量

  定义:成员变量直接定义在类中;局部变量定义在方法中,参数上,语句中。

  范围:成员变量在这个类中有效;局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。

  生命周期:成员变量存在于堆内存中,随着对象的产生而存在、消失而消失;局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

  二、类的构造函数

  构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数的一种。所有对象创建时,都需要初始化才可以用。

  一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果该类中自定义了构造函数,那么默认的构造函数就没有了。

  特点:

  该函数的名称和所在类的名称相同

  不需要定义返回值类型

  该函数没有具体的返回值

  成都java培训班:Java基础-面向对象

  三、面向对象的三大特征

  1、继承

  继承是面向对象程序设计能够提高软件开发效率的重要原因之一;

  继承是具有传递性的;

  继承来的属性和方法是隐式的,也就是在本类里面是看不见的;

  一个类只能有一个父类,也就是类只能是单继承;

  一个接口可以有多个父类,也就是接口可以是多继承。

  2、封装

  对象数据和操作该对象的指令都是对象自身的一部分,能够实现尽可能对外部隐藏数据;

  实际项目开发中,使用封装最多的就是实体类,常常和JavaBean(类必须是具体的和公共的,并且有无需参数的构造器)一起使用;

  那么,实体类通常包含:私有的成员变量、五参数的构造函数、有参数的构造函数、setter和getters方法、重写tostring方法、重写hashCode和equals方法。

  3、多态

  多态就是对象拥有多种形态:应用多态和方法多态。

  引用多态:父类的引用可以指向本类对象、父类的引用可以指向子类的对象

  方法多态:创建本类对象时,调用的方法为本类的方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法。

  存在多态的必要条件:继承、重写

  多态的作用是消除类型之间的耦合关系

  在实际项目开发中,A类继承B类,如果在A类中不重写B类中的方法时,输出的仍旧是B类方法里面的信息;如果在A类中重写B类的方法的时候,输出的是A类方法里面的信息。

  四、Java中抽象类

  定义:在不断抽取过程中,将共性内容中的方法生命抽取,但是方法不一样,没有抽取,这样抽取到的方法,并不具体,需要被指定关键字abstract锁标示,生命为抽象方法。

  抽象方法所在的类一定要标示为抽象类,也就是说该类需要被abstract关键字锁修饰

  特点:抽象方法只能定义在抽象类中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。

  抽象方法只定义方法生命,并不定义方法实现。

  抽象类不可以被创建对象(不可以实例化)

  只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该类才可以实例化。否则,该子类还是一个抽象类。

  注意:

  抽象类中是否有构造函数?有,用于给子类对象进行初始化抽象类是否可以定义非抽象类?可以。其实,抽象类和一般的类没有太大的区别,都是在描述事物,只不过抽象类在描述事物时,有些功能不具体。所以抽象类和一般类在定义上,都是需要定义属性和行为的。只不过,比一般类多了一个抽象函数。而且比一般类少了一个创建对象的部分抽象关键字abstract和哪些不可以共存final,private,static抽象类可不可以不定义抽象方法?可以。抽象方法目的仅仅为了不让该类创建对象

  五、Java中抽象类和接口的区别

  1、抽象类只能被继承,而且只能单继承;接口需要被实现。而且是多实现

  2、抽象类中可以定义抽象方法和非抽象方法,子类可以直接继承使用;接口中方法只有方法体没有方法的实现,需要子类实现。

  3、抽象类使用的是 is-a关系;接口使用的是 like-a关系

  4、抽象类的陈孤雁修饰符可以自定义;接口中的成员修饰符是固定的,全部是public的

  六、static、final、this、supper关键字总结

  1、final关键字

  final关键字主要用在三个地方:变量、方法、类

  对于一个final变量,如果是进本数据类型的变量,则其数值一旦在初始化后便不能更改;如果是引用类型的变量,则在其初始化之后不能再让其指向另一个对象。

  当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式的指定为final方法

  使用final方法的原因有两个:第一个原因就是把方法锁定,以防止任何类继承修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用,但是如果方法过于庞大,可能看不到内嵌调用带来的额任何性能的提升(现在的Java版本已经不需要使用final放阿飞进行这些优化了)。类中所有的private方法都隐式的指定为final。

  2、static关键字

  static关键字主要有以下四种使用场景

  修饰成员变量和成员方法

  被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static声明的成员变量属于静态成员变量,静态变量存放在Java内存区域的方法区。调用格式:类名.静态变量名;;类名.静态方法名()。

  静态代码块

  静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。该类不管创建多少对象,静态代码块只执行一次。

  静态内部类(static修饰类的话只能修饰内部类)

  静态内部类与非静态内部类之间存在一个最大的区别:非静态内部类在编译完成之后会隐含地保存一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1、它的创建时不需要依赖外围类的创建。2、它不能使用任何外围类的非static成员变量和方法。

  静态导包(用来导入类中的静态资源,1.5之后的新特性)

  格式为:import static

  这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中的静态成员,可以直接使用类中静态成员变量和成员方法。

  成都java培训班:Java基础-面向对象

  3、this关键字

  this关键字用于引用类的当前实例。例如:

  class Manager{

  Employees[] employees;

  void manageEmployees(){

  int totalEmp=this.employees.length;

  System.err.println("total emploees:"+totalEmp);

  this.report();

  }

  void report(){}

  }

  在上面的示例中,this关键字用于两个地方:

  this.employees.length;访问Manager的当前实例的变量

  this.report();调用Manager的当前实例的方法。

  此关键字是可选的,这意味着如果使用上面的示例在不使用此关键字的情况下表现相同。但是,使用此关键字可能会使代码更易读或易懂。

  4、supper关键字

  supper关键字用于子类访问父类的变量和方法。例如:

  public class Super {

  protected int num;

  protected void showNUmber(){

  System.err.println("number="+num);

  }

  }

  public class sub extends Super{

  void bar(){

  super.num=10;

  super.showNUmber();

  }

  }

  在上面的例子中,sub类访问父类成员变量number并调用其父类super的showNumber()方法。

  使用this和super要注意的问题:

  super调用父类中的其他构造方法时,调用时要放在构造函数的首行。this调用奔雷中的其他构造方法是,也要放在首行。

  this。super不能用在static方法中

  简单解释一下:

  被static修饰的成员属于类,不属于单个这个类的某个对象,被所有对象共享。而this代表对本类对象的引用,指向本类对象;而super代表父类对象的引用,指向父类对象。所以,this和super是属于对象范畴的东西,而静态方法数属于类范畴的东西。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56