Java面向对象

面向过程 & 面向对象

思想

面向过程:将一件事情步骤化(只适合处理较为简单的问题)
面向对象:思考问题会将问题进行分类,再对分类进行单独思考。最后才会对某个分类下的细节进行面向过程的思索(更适合处理大型复杂问题,适合处理多人协作的问题)

面向对象编程的本质:以类的方式组织代码,以对象的封装数据
抽象

三大特性

封装

高内聚/低耦合:类的内部数据操作细节自己完成,不允许外部干涉/仅暴露少量的方法给外部使用
封装:应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
属性私有:get/set

private 访问关键字来实现封装
在这里插入图片描述

继承

派生:在继承了一些东西基础上增添新的东西

Java类只有单继承,没有多继承(只有接口有多继承)
子类继承父类,关键字extands来表示
子类和父类之间,从意义上讲具有“is a”的关系
Object 是所有类的基类

super
super注意点

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法
    vs this
  • this:指本身调用者这个对象
  • super:父类的引用
  • this没有继承也可以使用
  • super有继承才可使用

构造方法

  • this 本类的构造
  • super 父类的构造
    在这里插入图片描述
方法的重写

重写只能public 父类与子类

重写:需要继承的关系 子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符,范围可以扩大不能缩小 public>protected>Default>private
4.抛出的异常,范围,可以被缩小,但不能扩大 classNotFundException -> Exception
重写:子类和父类的方法必须一直,方法体不同
1.父类的功能子类不一定需要 或者不一定满足

多态

同一个方法根据发送对象的不同采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向对象的引用的类型很多

Person p =  new Student(); //向上提型
Student p1 = new Student();

多态存在的条件

  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象

注意:多态是方法的多态,属性没有多态性.

static方法:属于类,不属于实例
final 常量 没有继承
private 方法 私有 不能继承

instanceof (类型转换-引用类型)

//(子类)父类 
Person p1 = new Student();
Student p2 = (Student)Person;
  • 将 子类转换为父类 向上转型(会丢失子类特有属性和方法)
  • 把父类转换为子类 向上转型 强制转换
  • 方便方法的调用,减少重复的代码
抽象类

abstract修饰符来修饰类/方法
只有约束没有实现
抽象出来,提高开发效率

  1. 不能new这个抽象类 只能靠子类去实现它:约束
  2. 抽象类中可以写普通方法
  3. 抽象的方法必须在抽象类中
public abstract class Action {
    public abstract void do();
}

创建与初始化对象

public class Studen {
     //属性
     String name; //null 抽象的类属性 最好不要赋值
     int age; //0
     final String name2; //
     //方法
     public static void main(String[] args){
         //**创建一个实例对象**
         Student stu = new  Sudent();
     }
}
构造器
  1. 每个类都有一个隐式构造器
  2. 必须没有返回类型,也不能也void
    3.作用:1.用于初始化属性 2.new 本质在调用构造方法
    4.注意:定义有参构造器之后 如果还想用无参构造,显示定义一个无参的构造
**无参构造**
public class Student {
    String name;
   public Student(){
       //初始化属性
       this.name = "张三";
   }
}
**有参构造**
 public class Student {
    String name;
   public Student(type var){
       //初始化属性
       this.name = "张三";
   }
}
访问关键字

访问关键字

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其它包
publicYYYYY
protectedYYYY/N(说明)N
defaultYYYNN
privateYNNNN

接口的默认访问权限为public

对象的内存

在这里插入图片描述

接口

作用

1.定义约束,方法让不同人实现
2.方法 public abstract
3.属性 public static final 常量
4.接口不能被实例化 接口没有构造方法
5.implements可以实现多个接口继承(伪继承)
6.实现接口的类必须重写接口的方法

请添加图片描述

在这里插入图片描述
请添加图片描述

N中内部类

成员内部类

可以获取外部类的私有属性

局部内部类
静态内部类
匿名内部类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值