Java面向对象三大特征的相关知识点总结

封装

封装即隐藏具体实现细节对外仅暴露公共的访问方式

具体体现
  • 私有是一种封装 被private 修饰后 调用时只能用set get方法修改查询
  • 将代码抽取到方法中是一种封装
  • 将变量定义到类中 是一种封装

类是现实世界中事务共同属性和行为的抽象,对象是对类的具体实现

  • 构造方法

    和类名一样 没有返回值 不能手动调用 由jvm虚拟机调用

private关键字

private关键字是修饰符 可以修饰成员变量和方法 被修饰后只能在本类中直接调用(对象名.的形式叫直接调用);

可以用setget方法调用

public class Demo{
    //成员变量
	private int i = 1; 
    private int b = 2;
    //空参构造方法 当一个类中定义了有参构造方法 他自带的隐藏空参方法将会消失 需重新定义过
    public void Demo(){};
    //有参构造
    public void Demo(int i,int b){
        this.i = i;
        this.b = b;
    }
    //setget方法
    public void setI (int i){
        this.i = i;
    }
    public void setB(int b){
        this.b = b;
    }
    //get方法
    public void getI(){
	   return i;
    }
    public void getB(){
	   return b;
    }
}
成员变量和局部变量

在这里插入图片描述

继承

概念
  • 继承就是类于类之间产生子父类关系

  • 定义格式
 class Son extends Father{}
  • 特点
    • 子类可以调用父类所有非私有成员
    • 只支持单继承,不支持多继承,支持多层基础
this 和 super
  • this

    • this.变量名调用的是此类中的变量
    • this();本类的构造方法
    • this.方法名();本类的成员方法
  • super

    • super();父类的构造方法
    • super.方法();父类的成员方法
    • super.变量名 父类的成员变量
  • 特点

    • 造方法体中默认有一个super();空参构造
      除非专门定义了父类的有参构造
    • this()于super()必须再构造方法体的第一行
访问权限
  • private 私有的只能在类中使用
  • 默认 可在同一个包中的类使用
  • protected 可在不同中的子类使用
  • public 可以在不同包中使用
方法重写
  • 在继承体系中,子类出现了和父类一模一样的方法(方法名,参数类型,返回值)
  • 与重载的区别,重载是在同一个类中,方法名
    相同,参数不同(数据类型,参数顺序,参数内容)与返回值无关
优缺点
  • 优点

    • 提高了代码的复用性
    • 提高了代码的维护性
    • 让类于类产生了联系时多态的基础
  • 缺点

    • 使子类必须拥有父类的非私有成员
    • 增加了代码的耦合性

多态

多态的概念

通一个事务在不同的时候表现出不同的形态,(伪代码演示 动物 a = new 猫(); 动物 b = new 狗();

多态的特点
  • 成员变量

编译时看左边(父类中),运行时看左边

  • 成员方法

    编译时看左边(父类),运行时看右边(子类)

多态的好处和弊端
  • 提高了程序扩展性
  • 在方法中传入父类,即可使用子类中的方法
public void useB(class B){
    B.method();
}
public class B{
    
}
public class A extends B {
    public void method(){};
}
  • 多条不能使用成员的特有方法
多态的转型
  1. 多态默认使用格式是向上转型 父类指向子类

  2. 当要调用子类方法时可以对多态进行向下转型

Cat z = (Animal) a;
  1. 当有多个类型时应该进行类型判断避免发生类型转换错误 classcastException
if (z instanceof Cat){
    cat z = (Cat)a;
}
接口
  • 概念
    • 当一个方法中所有的方法都是抽象方法,可以定义为接口
  • 定义格式
public interface Demo1{}
//实现类
public class Demo1Impl impl implements Demo1{}
  • 特点
    • 接口不能创建对象
    • 接口的实现类必须重写接口的抽象方法、或自己也变成接口
    • 接口可以多继承
    • 接口的成员变量是常量 被public static final修饰
    • 没有构造方法
    • 只能由抽象方法(JDK8之前)
  • JDK8新特性
    • 可以定义普通方法
public default void method(){}
  • 如果实现类实现多个接口 普通方法要重写
  • 静态方法 一般用于工具类
public static void mehtod(){}
//调用
Demo1.method();
  • 类和接口
    • 类和类是继承关系,只能单继承,不能多继承
    • 类和接口是实现关系,需要重写接口的抽象方法
    • 接口和接口时继承关系,可以多继承
抽象类
  • 含有抽象方法的类必须声明为抽象类

  • 抽象方法

    • 抽取到父类的方法无法定义具体的实现逻辑
      为抽象方法
    • 抽象方法没有方法体
  • 定义

  • public abstract class AbstractDemo{
    	public abstract void method();
    }
    
  • 特点

    • 抽象类不能创建对象
    • 抽象类有构造方法
    • 抽象类可以没有抽象方法
    • 抽象类的子类必须重写父类的所有抽象方法,或者也变成抽象类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值