java最基本概念小结

五个java基本概念问题

 

1,构造方法可以重写吗?

既然问重写,那么肯定这是类与类的关系,暂时认为是继承关系。不可以重写,也不是重写。调用父类的构造方法,用super()且作为第一条语句。

即使在同一个类中,所写的构造器,对参数列表有要求,一般为个数,跟顺序无关,这点与方法重载不一样。

this()调用本类的构造方法,可以在构造方法的第一行使用this(参数列表)调用本类其它(重载的)构造方法。

 

2,接口可以继承接口吗?

不仅可以,还可以继承多个接口(extends)。看清这可是继承多个噢!!补充:一个类可以实现多个接口,但一个类只能继承一个类,不能继承多个类,并在继承的同时也可以实现接口。

 

3,一个源文件可以有多个公共类吗?

不可以。一个源文件只有一个公共类,在public类中找程序的入口main()函数,你想想如果有很多public类,那程序从何处运行呢?

 

4,abstract 不能和哪些关键字共存为什么?

private     冲突;

final       冲突;

static      无意义。抽象类有构造方法,但是不能实例化,那么构造方法的作用是什么?用于子类访问父类数据的初始化。

 

5,overload和override的关系?

overload   重载,方法与方法之间的关系。

override   重写,类与类之间的关系。两者必须是继承关系,重写方法不能使用比被重写方法更严格的访问权限。

 

java基本概念

先分别探究五个方面,包括构造方法的特点、继承、抽象类、接口、多态,再感悟式融合这些概念。

 

(一)构造方法的特点

构造方法是java类中的一个比较特殊的方法有如下特点:

1,该方法一定要与类同名。

2,该方法不能手工调用,它是在创建类的实例时会被自动调用。

3,该方法无返回值。无返回值是指不存在,而void代表有返回值,只是返回值为空。

4,一个类可以没有构造方法,因为系统会给一个默认的构造方法,也可以有多个构造方法他们之间构成重载关系。想一想构造方法的重载与方法的重载的异同?

5,想一想为什么出现了有参构造器?

减少代码量,怎么减少的呢?如果你想初始化一个对象,并给这个对象赋值(赋很多属性),利用无参构造器,则必定使用多个set()方法,这就使得代码量增加了,如果是有参构造器则可以很好解决这个问题。

6,注意,如果我定义了有参的构造器,就会屏蔽调系统无参的构造方法,所以写了有参构造器,别忘了写无参构造器。

7,构造方法不能被继承。

8,构造方法使用场合与作用?

当我们在创建一个类的实例时,就想给它的私有字段赋初值;简化我们为类字段赋值的代码。

 

(二)继承

继承普通类;继承抽象类更严密。

问题:这里为什么说继承抽象类更具严密性?

继承的知识点:

1,继承需要符合的关系是  is---a ,父类更通用,子类更具体。

2,当代码存在重复,违背了“write once,only once”的原则,代码太多不好维护。而继承就解决重复。

3,子类自动继承父类的属性和方法,子类中不再存在重复代码,使用继承的优点是可以有效实现代码复用,这样代码量减少,那么有利于后期维护。继承不能多继承,因为会造成维护问题;继承是多态的前提;子类不能继承父类的构造方法,只能super()调用,虽然没有继承,但还是用super()方式调用了构造器。

4,子类可以调用父类的public和protected方法,不能调用private修饰的方法。

5,子类可以无条件的给父类赋值,子类给父类赋值永远都是安全的,父类给子类赋值是危险的。

 

(三)抽象类

1,抽象类是一个未定义完整的类,其中的抽象方法将会延迟到它的子类中去实现。

2,抽象类+子类实现的抽象方法==完整的类

3,一个抽象类可以没有抽象方法,但该类没有任何存在的意义;一个抽象类中可以有多个抽象方法;抽象方法一定不能有实现,不能有{};一个普通类中不允许存在抽象方法,因为有抽象方法的类必定是抽象类。两者关系是,必要非充分条件(抽象类推不出抽象方法;抽象方法推得出抽象类)。

4,抽象类的子类一定要实现抽象类中的抽象方法?错,不太正确。如果抽象类的子类没有实现抽象中抽象方法,那么该子类也必须为抽象类。

5,普通类里面定义普通方法,且该方法中方法体为空,我们在继承此类时,编译不会报错,这样严密性很低,于是采用抽象方法,从而导致抽象类,这样继承抽象类必定重写方法,假如你不重写,则在编译时就会报错,想叫你重写方法,所以抽象类显得更具严密性。

6,接口实现类一定要实现接口中所定义的方法?不一定,该类为抽象类。

7,接口可以继承吗?可以,还可以多继承。

8,多态的实现,可以是普通类,抽象类,但是推荐的是接口。

 

(四)接口

1,接口不能实例化,方法、属性都是public修饰的,你不写修饰符,它默认修饰符也是public的,为什么呢?因为它想你去实现它,其中属性最好这样写 : public  static  final  String   a  = "   " ;常量。其实接口修饰符为public很好理解,我的存在是为了解决你的问题,当然公开,并说快来实现我吧。

2,接口可以作为一种数据类型来使用;利用接口(强烈推荐)实现多态:有接口;有实现该接口的实现类;定义接口类型,由该实现类为其赋值。

3,想想什么情况下是extends?

共属性。优点:代码复用;缺点:局限于将来的扩展类必须为该类。

4,想想什么情况下是implements?

共方法。优点:程序的扩展性将会大大加强;缺点:没有代码复用。

5,系统要具备良好的可扩展性与可维护性性,你想到了什么?多态。

6,面向接口编程。

7,让一个类既继承又实现:继承提高了代码复用性,实现提高了可扩展性;单继承多实现。所以由需求设计程序,是继承或是实现接口,抑或是两者一起使用?

8,接口可以嵌套。

9,接口支持常量。

 

(五)多态

Open--Close原则。

当我们的一个软件的需求发生变化时,我们能够以添加新的代码的方式,而不是修改原来地安门的方式来适应需求变化的更改,如果能够到这些,我们就讲这中设计满足Open--Close原则。

多态特点:

1,存在着一个继承关系。

2,子类一定有重写方法,至少存在一个。

3,一定存在子类给父类赋值过程。

使用多态之后,当需要增加新的子类型时,无需更改总部类,程序的可扩展型及可维护性增强。多态实质上是指,一个抽象的指令,让一组具有相同行为但具有不用内容的个体协同工作的这样的一个过程。

 

 

感悟式融合概念

我们在使用一些工具和方法解决问题,在很长的一个时间段,慢慢发现这个工具和方法其实存在一些问题,于是针对问题,提出解决方法,而这个解决方法被称为概念。

 

多想下概念是什么?每一个概念的出现都是为了解决某问题,以问题出发反过来理解概念。概念存在的意义是为了解决已存在的问题,你有想过问题又是怎样出现的呢?现在回过头来想想java这些概念,封装?构造器?属性?方法?子类?抽象类?接口?多态?等等各种概念。

 

java纯粹的面向对象编程。我们把事物以类概念加以区分,让类与类不要发生关系,这是java面向对象编程的实质。我们现实的世界是很复杂,是多维的,得想办法让多维变成低维。你看,高中物理学的平行四边形法则,不就是利用这种思想么?让二维变成一维,这样子在一维上研究问题,就不会影响其它的了。为了类的对象更好地调用属性,调用方法,于是出现了封装这个概念。说到了封装,我想到了javaBean。javaBean其实就是一个对象属性封装类,任何类都自带有一个无参构造器。java封装的思想主要为实现“高内聚,低耦合”,javaBean很好的实现了它并可多次复用。封装就相当于把人放在房子里保护起来,而get()和set()方法就相当于门,用来提供与外界交互。那又如何形象而具体理解javaBean这个术语呢?因为就像一个豆荚一样,每一个属性就像一个豆粒,用豆荚把豆粒全部封装起来。封装是为了安全,不愿意外界访问。封装的是属性、方法和可有可无的构造器。不,如果没有自定义构造器,那么对象在调用属性时,此刻的对象为无参构造器所创建的对象,为了调用其它属性,其代码将会繁琐,为了让代码量减少,所以应该自定义构造器。构造器的存在是为了创建类的对象并初始化(赋值)。其实,封装好了那就是一个类。当两个类他们有共同的属性和方法时,那么代码必存在重复,如何解决重复?继承。继承可以减少代码,而代码一旦减少,那么程序将变得好维护,这也是继承的本质。最开始,我们研究继承一个普通类,如果其方法中方法体为空,没有任何内容,我们在继承时编译无错,但这不是我们想要的,为了更严密性于是就有了抽象类,一个抽象类如果没有抽象方法那么这个抽象类存在是没有任何意义的。抽象类存在是为了继承时更具严密性。但这并未完全解决问题,因为对象他还有一些别的功能如何实现-----接口。接口就是扩展功能,接口欢迎访问。我不管你是继承(继承抽象类)还是实现接口,这抽象类、接口不能够实例化,但是我们知道类也是数据类型叫引用数据类型,于是利用抽象类和接口的引用变量,指向实现子类的实例,而这种方式我们就叫做多态

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值