【Javaoop基础】多态/四个关键字

本文介绍了Java面向对象编程的基础概念,包括封装、访问修饰符的使用,以及JavaBean规范。接着详细讲解了多态的两个层面——方法的重载和重写,探讨了构造方法、Object类中的方法以及多态带来的好处。同时,讨论了final、static关键字的作用,并涉及抽象类、接口等高级特性,帮助理解Java OOP的设计理念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.封装

利用一种机制来控制数据的可见性,这种机制-->访问修饰符

2.四个访问修饰符

public->protect->默认->private(从左到右可见性逐渐缩小)

public所修饰的数据在任何情况下都是可见的(本类、同一个包下的不同类之间、同一个包下的父子类之间、在不同包下的父子类或者无关类之间)

private所修饰的数据只在本类中是可见的

protect和默认所修饰的数据,在同一个包下和public是一样的;不同包下protected是有可能被访问到的,但是默认的是一定不能被访问到。

3.Javabean-->是一种封装数据的方法

要求:

(1)类必须是public的

(2)所有的属性必须是private的

(3)为每一个属性提供一组setter/getter方法用于访问(设置/取值)

//setter赋值方法

public void set首字母大写的属性名(参数){

this.属性名=参数

}

//getter取值方法

public String get首字母大写的属性名() {

            return this.属性名;

}

(4)必须含有至少一个无参构造方法

问题:

1能不能设计出只读或者只写的属性

只读:

属性private

只为属性提供getter方法

只写:

属性private

只为属性提供setter方法

4.多态:就是一个事物在不同条件下所呈现出的不同状态

比如:水

0度以下:固态,0~100度:液态,100以上:气态

在程序中的多态是怎么表现的?

  (1)从末微(从方法)观角度

方法在不同条件下呈现的不同状态

   (a)方法的重载:扩展本类中同类型方法的功能

       a1.在同一个类中

       a2.方法名必须相同

       a3.参数列表不能相同(参数的数量不同,参数类型不同,不同数据类型的顺序不同,相同类型但是顺序不同不叫参数列表不同)

       a4.返回类型没有限制

       a5.访问修饰符没有限制

       a6.和异常的关系

   (b)方法的重写:子类方法覆盖父类的方法的功能

        b1.发生在父子类之间

        b2.方法名相同

        b3.参数列表相同

        b4.访问修饰符子类方法的访问不能小于父类方法的

        b5.返回类型相同

        b6.和异常的关系...

  构造方法可以重载,构造方法不可以重写,构造方法和类名相同

  Object类中有重载的方法,wait()方法;

  Object类中有重写的方法,equals()和tostring()、hasCode()

  (2)从宏观(从对象)角度

对象在不同条件下呈现的不同状态

对象多态的前提:

①必须在父子类之间、

②必须有方法的重写

③必须有父类引用指向子类对象

A是B的父类

B b=new B();一般实例化

A a=new B();父类的引用指向子类对象

为什么要使用多态?

简化代码结构,提高代码的可维护性

5.理解多态:

1.实例化对象的时候,父类引用=之类对象

2.方法的参数

定义:public void 方法名(父类引用)

调用:方法名(之类对象)

3.方法的返回值

public 父类 方法名(参数列表){

return 之类对象

}

6.final终态

   ①修饰类:终态类-->不能被继承

   ②修饰成员变量:终态变量-->当变量赋值完一次以后就不能被修改

   ③修饰方法:终态方法-->不能被重写

   ④修饰方法的参数:终态参数-->参数只能取值不能被赋值

   ⑤修饰对象的引用:终态的引用-->引用指向的地址不能改变

7.static静态

   ①修饰成员变量:修饰成员变量的特性由隶属对象的变量变成隶属于类的变量(如果:变量final static的那么说明该变量既不能重新赋值又是属于类的属性,这一属性称之为常量)

所以该变量的调用方式不在需要用对象调用类名静态属性名

 ②修饰方法:修饰方法的特性由隶属对象的方法变成隶属类的方法

所以该方法的调用方式不在需要用对象调用;类名.静态方法名

 ③修饰块

static{

           }是在构造方法前运行的,所以静态块中可以放一些资源的初始化操作(例如:JDBC驱动的加载)

 

注意:静态资源和非静态资源在JVM的加载时机问题

静态资源只能调用静态资源,非静态调用即可以调用静态资源也可以调用非静态资源

Why?

静态资源的加载比非静态资源要更早!程序内容的不是按从上往下的顺序初始化

 

  1. abstract、interface:是一种思想,对编程的一种,对程序脉络把控思路重要体现

8.abstract抽象

  1. 修饰类:抽象类
  2. 修饰方法:抽象方法(没有方法体的方法)

抽象类中可以有普通方法也可以有抽象方法;抽象方法必须在抽象类中;抽象类不能被实例化;抽象类中的抽象方法是需要子类重写,非抽象的方法可以使用之类继承或者修改成static的来调用;如果子类不能完全重写父类中所有的抽象方法,那么子类也应该是抽象的;抽象类中定义成员变量没有限制,要使用该成员变量的时候方法可以使用之类继承或者修改成static的来调用;抽象类只能单继承

9.interface接口(抽象的抽象类)

接口中的方法必须是抽象方法,而且默认的方法就是public abstract的;接口中的成员变量默认就是public static final;接口不能实例化;接口中的所有都需要之类重写,如果实现类不想重写接口中所有的抽象方法,那么该实现类也应该是抽象的;接口是可以多实现的.

问题:

  1. 抽象类能否继承抽象类?可以
  2. 接口能否继承接口?可以
  3. 接口能否实现接口?不可以
  4. 接口能否继承抽象类?不可以
  5. 抽象类能否实现接口?可以

 

 

 

 

 

 

     

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值