java学习--面向对象

面向对象

概述

面向对象和面向过程

  • 面向过程:侧重分步骤

  • 面向对象:侧重分模块

构造方法

构造方法:主要就是用于创建对象时调用,并给对象的属性初始化赋值

权限修饰符 方法名/类名(参数列表) {方法体}

构造方法没有返回值,连void的也没有,另外构造方法的方法名必须和类名一致

如果类中没有定义构造方法,则默认有一个公共的无参构造 public 类名(){}

但是我们定义了构造方法,则不会再提供默认的无参构造

所以一般我们在创建构造方法的时候也会手动创建一个无参构造

    
 public constructor_test2(){
     }
     public constructor_test2(int i){
     
     }
     public static void main(String[] args) {
         constructor_test2 c1 = new constructor_test2();
     }

类和对象

  • 对象:

    1. 代码角度:new的一个实例,封装了成员属性

    2. 数据角度:封装数据和逻辑的一种方式

    3. 现实角度:对象就是某一个具体的个体,一切皆对象

    4. 设计角度:从一个实际的实体种抽象出来某些属性的一种实体表示

  • 类:描述了一类事物的属性和特征

    类中封装属性,对象封装属性值

实例化

  1. 加载相关类到方法区

  2. 在堆内存开辟内存空间

  3. 调用构造方法,栈内存开辟栈帧,并对堆内存进行数据初始化

  4. 构造方法弹栈,把堆内存内存地址返回

对象使用

          
 Student s1 =new Student(1001,"张三",false,24,"石家庄");
         Student s2 =new Student(1001,"李四",false,22,"北京");
         System.out.println(s1.getId());
         //对象,成员属性
         s1.setName("王五");
         System.out.println(s1.getName());
         System.out.println(s2.getName()); 

Bean

属性私有化,提供对应的getter/setter方法,提供有参构造和无参构造

POJO:普通实体类

Model:一般会和数据库表一一对应

常见异常

对象调用静态属性

注意事项

静态调用成员

需要创建对象调用

传值和传引用

区分成员方法和构造方法

看返回值,构造方法没有返回值,连void都没有

This

概述

this:是每个对象中,保存自身内存地址的一个引用类型变量(成员变量)

因此this无法在静态上下文中使用

作用

  • 用在成员方法和构造方法中,区分同名的局部变量和成员变量

  • 用在构造方法中,用于重载调用当前类中其他构造方法,提高代码重用性

  • return this可以链式调用

如何使用

区分成员变量和局部变量

重载调用构造方法

链式调用

注意

Static

概述

Static关键字,是修饰静态的修饰符

作用

  • 修饰静态变量

  • 修饰静态方法

  • 修饰静态语句块

如何使用

实例语句块

一般对象初始化写在构造方法中,很少写实例语句块

静态和成员的应用场景

  • 静态变量是类的所有对象共有的属性和值

  • 成员变量是类的所有对象共有的属性,值可以相同可以不同

封装

软件包机制

package

package软件包机制,方便分类管理,可以解决命名冲突问题

一般采用公司域名倒序的方式命名

java.package语句 是限制class文件的保存位置,与java文件无关

package语句 可以不写,如果写的话,必须在java源文件的第一行

import

注意

注意:eclipse编程中,按空格和回车的时候,会自动导包。此时需要注意,导入的是否是正确的

权限修饰符

继承

概述

继承:从已有类中派生出新的类,新的类会拥有父类的属性和行为

  • java只支持单继承,这样使java类关系比较简单

  • 一个类可以被很多类继承

  • java中继承使可以被传递的

  • 如果一个类没有显示继承另一个类的话,默认继承ObjectObjectjava提供的根类(祖宗)

作用

继承目的:代码复用

如何使用

通过extends表示 class 类名 extends 父类名 {}

Super

概述

super :在子类中,通过this表示当前对象,通过super表示父类

作用

  • 用在成员方法和构造方法中,区分父子类同名的属性

  • 用在构造方法中,用于重载调用父类的构造方法super(),必须写在子类构造方法第一行

如何使用

区分父子类同名属性

调用父类构造

子类创建对象,一定会执行父类构造方法

注意事项

  • this()也必须在构造方法第一行,所有this()super()不能同时出现

  • 如果子类构造方法中,没有写this(...),也没有写super(...),则第一行默认有super()去调用父类无参构造

  • thissuper都不能在静态上下文中使用

覆写Override

概述

方法覆写:子类对父类方法进行重新编写

当父类功能无法满足子类需求的时候,子类可以根据需求进行覆写

覆写条件

  • 必须是有继承关系的体系中

  • 方法名,参数列表,返回值必须一致

  • 不能比原方法有更低的访问权限

  • 不能比原方法有更宽泛的异常

  • 方法覆写,特指成员方法(只有成员方法可以覆写)

应用场景

当父类功能无法满足子类需求的时候,子类可以根据需求进行覆写

面试题

overloadoverride的区别?

overload是方法重载,方法名相同,参数列表不同,参数列表不同可以是个数不同也可以是类型不同

override是方法覆写,要求方法名,参数列表,返回值必须一致,不能有更低的访问权限,不能有更宽泛的异常

Final

概述

final是个修饰符,表示最终的,不可更改的

作用

final修饰的类 不能被继承

final修饰的成员方法,不能被覆写

final修饰的成员变量,没有默认值,必须显示赋值(不能有不赋值的情况),不能二次赋值

final修饰的静态变量,是常量,没有默认值,必须显示赋值(不能有不赋值的情况),不能二次赋值,一般会和public一起使用,psf: public static final,并且常量名,一般全大写

fianl修饰的局部变量,不能二次赋值

如何使用

深入final

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值