面向对象的三大特征

一、封装性
当我创建完对象以后,我如果直接通过“对象名.属性名”的方式给属性赋值的话,可能会出现一些不符合实际情况的问题。
所以我们不考虑使用“对象名.属性名”的方式赋值,而是通过“对象名.方法名”的方式进行赋值,因为我可以在方法里面加上大量的业务逻辑,对属性值进行限制。
1、解决方法:(怎么去用封装呢)
1)将属性私有化。
2)提供公用的(get and set)方法实现属性的取值和赋值。
构造方法 new的就是一个构造方法
在我们创建对象的时候,会用见一个特殊的方法叫做构造方法(构造器)
2、怎么去创建一个构造方法呢?
public 构造方法名(形参){
}
3、注意:
1、构造方法没有返回值。
2、构造方法名必须和你当前类的名字一致,包括大小写
构造方法是一个方法,它可以用于方法重载吗? 可以
4、作用:
1)创建对象,new的时候就是调用了构造方法。
2)在创建对象的同时,我们可以调用有参的构造方法,直接对属性赋值。
5、注意:
1)如果显示没有定义,系统会提供一个无参的构造方法
2)如果显示的定义了一个构造方法,系统不会提供,需要我们手动的创建一个无参的(注意)
6、this关键字
成员变量和局部变量出现重名时,方法会根据“就近原则”使用局部变量的值
如果想区分局部变量和局部变量可以使用this关键字
this关键字作用于成员变量
7、格式:
this.成员变量
8、什么是this?
1)this代表当前使用的对象或者是正在创建的对象,谁通过那个对象调用了方法,谁就是this
2)this可以修饰成员变量、方法、构造方法,直接在成员变量名或者成员方法名之前加上this
3)可以在构造方法中通过this(形象)的方式调用本类其他构造方法
9、注意:
在构造方法内部this(形参)必须写在首行
如果一个类里面有n个构造方法,那么最多n-1个构造方法调用了this
二、继承性
1、什么是继承?
子类继承父类,允许子类拥有父类的属性和行为。
2、优点:提高了代码的复用性。
3、缺点:由于继承会有多层的继承关系,会提高他们之间的依赖关系,耦合度会变高。
4、语法:
class 子类 extends 父类
1)使用继承以后父类所有的属性(除了私有的)和方法子类都可以获取到
2)子类除了通过继承父类的属性和方法外,还可以单独定义自己独有的属性和方法
3)一个子类还可以派生别的子类吗? 可以的
4)一个父类可以有多个子类,一个子类不能有多个父类吗? 
java的继承是单继承:一个子类只能有一个父类,一个父类可以有多个子类。
5、super关键字
super关键字可以修饰属性、方法、构造方法。
1、当前子类和父类的属性出现重名时,默认会调用子类的属性,可以通过“super.属性名”的方式显示的调用父类声明的同名属性。
2、子类重写父类方法后,如果子类想再次调用父类被重写的方法,可以通过“super.方法名”的方法调用父类方法
3、super可以修改构造方法,通过子类“super(形参)”来显示的调用父类对应的构造方法。
6、注意:
1)super(形参)必须声明在首行
2)说明this(形参) ---- super(形参)只能出现一个
3)在构造方法中,不显示的通过super(形参)的方式调用父类对应的构造方法。
默认会调用父类无参的构造方

7、访问修饰符:修饰类、变量、方法、接口
public:公共的,在当前项目下任何地方都可以访问。
protected:受保护的,在同一个包下或者在其他子类中可以访问。
default:缺省,在同一个包下可以访问。
private:私有,仅在当前类下可以使用。
8、方法重写:如果父类的方法满足不了子类要求时,子类可以对父类的方法进行重写
重写规则:
1)要求子类重写的方法名、参数列表、返回值类型必须和父类完全一致
2)子类重写方法的访问修饰符权限不能低于父类方法修饰符权限
3)子类方法和父类方法必须同为static或非static
9、重载(overload)和重写(override)的区别: (重点整理)
1)、方法重载必须在同一个类中,方法重写必须存在继承关系
2)、方法重载要求方法名相同、参数列表必须不相同,和返回值无关
3)、方法重写要求方法名、参数列表、返回值必须和父类一致
三、多态性
1、什么是多态性?
1)同一个动作与不同的对象产生不同的行为。
2)多态指的是一个对象的多种形态。
2、多态的体现方式?
1)使用继承:不同的子类重写父类方法后,体现出来的形式不一样。
2)接口的实现
3、形成多态的必要条件?
1)继承:存在子类与父类的关系
2)接口的实现:定义一个类实现对应的接口
3)重写:子类重写了父类的方法
4)重载:调用相同的方法名实现的功能不一样(与重写一起都在方法博客记录)
5)子类对象的多态性(重点)
4.程序分为两种状态,一个编译状态,一个是运行状态

  • 对于多态来说,编译时看左边,你这个对象是定义的是什么类型就是什么类型,讲pet对象看做是Pet类型
  • 运行时,看右边,真正执行的对象,也就是子类对象(Dog),执行的也是子类重写后的方法。
    5.上转型和下转型
    1)上转型:讲子类对象交给父类引用,可以自动转换
    2)下转型:把父类转成子类 强制类型转换
    6.对象的多态性
    1)父类的引用指向子类的实例
    2)在编译期间调用的父类的方法,真正执行的时候,执行的是子类的方法
    3)编译看左边,运行看右边
    inal关键字:代表最终的意思
    7、可以修饰什么
    1)修饰类
    2)修饰方法
    3)修饰成员变量
    4)修饰局部变量

8、修饰类,这个类有什么特点?
这个类不能被继承,他就是一个太监类,但是可以继承别的类
9、修饰方法,这个方法有什么特点?
代表这个方法是一个最终方法,不能被重写
10、修饰成员变量有什么特点?成员交量的值不可改变
1)成员变量不会再有到认值
2)如果使用final关键字。必须直接对成员变量进行赋值
11修饰局部变量的特点,局部变量的值不能改变,一般用它修饰常量。
ststic关键字(静态的)

  • 修饰成员变量
    1)这个变量就不属于对象了,属于类本身,可以通过”类名.属性名“
    2)只要通过这个类创建的对象都可以共享这个属性
    3)当其中一个对象对类变量进行更改后,其他的这个类变量也会更改。
  • VS实例对象(非static的变量,属于对象本身,各个对象都有各自一套副本)
    4)类变量是随着类的加载而加载
    5)类变量放在方法区的静态域里面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值