面向对象学习基础进阶

目录内容

在这里插入图片描述

00p就是面向对象的意思

在这里插入图片描述

重点: 属性加方法就是一个类




一:面向对象与面向过程讲解

在这里插入图片描述



二: 什么是面向对象

在这里插入图片描述



重点: 面向对象编程的本质:以类的方式组织代码 以对象的组织(封装)数据

从认识论角度考虑是先有对象后有类 对象 是具体的事物 类是抽象的 是对对象的抽象
从代码运行角度考虑是先有类后有对象 。 类是对象的模板

三:回顾方法并加深

在这里插入图片描述




重点
break的意思为:跳出switch 和结束循环
return的意思为:结束方法 和返回一个结果!
定义方法名的重点:1 注意规范 2 见名知意(如果你写了一个方法代码 过了一个月看到方法命名就能知道是干什么的)

Exception 就是异常的意思



练习

在这里插入图片描述

四:静态方法和非静态方法的调用

在这里插入图片描述

在这里插入图片描述

重点:
报错原因:static 和类一起加载的 而没有static的方法只有类实例化(实例一个对象) 之后才存在




五:形参和实参

在这里插入图片描述

六:值传递和引用传递

重点:方法a引用了change方法后a的值不变

在这里插入图片描述

在这里插入图片描述

对比:(打印值的不同)

在这里插入图片描述

六:类跟对象的关系

七:创建与初始化对象

在这里插入图片描述

在这里插入图片描述

重点:
类是一种抽象的数据类型 它是对某一类事物整体描述/定义 但并不能代表一个具体的事物 比如动物 人 植物等
而对象是抽象概念的具体实例 能够体现出功能的是具体的实例而不是一个抽象的概念 比如张三是一个人 旺财是一条狗是等等




一个程序只有一个主启动类 (也就是程序中只有一个类含有main方法 其他的类中没有)




一个类里面最多有属性和方法



学程序可以对世界进行更好的建模!
面向对象编程的本质就是:以类的方式组织代码 以对象的组织(封装)数据



在这里插入图片描述

八:构造器(重点必须掌握)

练习一

重点:一个类即使什么都不写 它也会存在一个方法



在这里插入图片描述

练习二

重点:快捷键 alt+insert 定义有参无参



构造器总结:
1 和类名相同
2 没有返回值
作用
1 定义一个new对象 本质在调用构造方法
2 初始化对象的值
注意点:
(重点 重点 重点)1 定义有参构造之后 如果还想使用无参构造
如 Person person1 = new Person();
那么必须显示的定义一个无参构造
如:public Person(){}

易错点 不理解有参构造:如
Person person = new Person(“二哥”);这一行代码为有参构造(二哥为参数传到方法里 也就是构造器里面)

在这里插入图片描述




在这里插入图片描述

九:创建对象内存分析

练习

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十:类和对象总结

1 类与对象:类是一个模板 :抽象 对象是一个具体的实例
2 方法 :方法的定义 和调用
3 对象的引用: 引用类型:八大基本类型

Java对象是通过引用来操作的 :也就是说在栈里面定义一个对象来引用堆里面的东西(栈—>堆)
4 属性:属性可以用字段Field或者成员变量(int String等)
属性默认初始化:
数字:0 0.0
char:u0000
Boolean:false
除了八大类型的引用类型:null
属性的定义: 修饰符 属性类型 属性名 = 属性值!
5 对象的创建和使用
A:必须使用new关键字创建对象 要有含有构造器的类
如 Person xiaoming=new Person();
B:对象的属性:xiaoming.name
C:对象的方法:xiaoming.sleep()
6 类:
类中有静态的属性(属性)和动态的行为(方法)

十一:什么是封装

面向对象三大特性:封装 继承 多态

在这里插入图片描述

重点:封装记住一句话:属性私有和get/set




封装代码的意义:
1 提高代码的安全性 保护数据
2 隐藏代码的实现细节
3 统一接口(统一用get/set方法来使用)
4 提高了系统的可维护性

练习

//属性私有
private String name;//名字
private int age;//年龄
private char sex;//性别
private int id;//学号



//由于上面的属性都是私有的
//提供一些可以操作这个属性的方法
//get 获取这个数据的方法
public String getName(){
//理解点:return name;和 return this.name;
//意思相同 因为在该类中返回name的值(return name)
// 的意思就是返回这个类中name的值(return this.name)
//return this.name;
return name;
}



//set 给这个数据设置值
public void setName(String name){
this.name=name;
}

在这里插入图片描述

重点:给数据设定值定义范围(避免不合法性)
public void setAge(int age) {
if (age>120||age<0){
this.age=3;
}else {
this.age = age;
}
}



在这里插入图片描述

十二:继承

在这里插入图片描述

继承的本质是对某一批类的抽象
而封装是对类里面的属性和方法进行操作

Java中类只有单继承 没有多继承
继承是类和类之间的一种关系
继承关系的两个类 一个为子类(派生类)一个为父类(基类)

练习




子类继承父类 就会拥有父类的全部方法(修饰符是public)


在这里插入图片描述

在Java中:所有的类 都默认直接或间接继承Object
快捷键 ctrl+H 查看继承父子级别



十三:super



练习一

父子类私有的东西(private)无法被继承

在这里插入图片描述

练习二



//调用父类的构造器 必须在子类构造器的第一行
//隐藏代码:调用了父类的无参构造(而且还在第一行)

在这里插入图片描述



练习三



子类(super调用)调用父类 有参构造器和无参构造器讲解(重点和难点)

重点:
super注意点:
1 子类super调用父类的构造方法,必须在构造方法的第一行
2 super必须只能出现在子类的方法或者构造方法中!
3 super和this不能同时出现在构造方法中(因为他们都要在构造方法的第一行)否则会报错(如下图)
【在本身无参构造中调用自身的有参构造
( 那么必须在构造方法中的等一 行代码否则会报错
但是在子类的无参构造中调用父类的无参构造super也必须在第一行代码
所以super和this不能同时出现在构造方法中)】
this注意点:
区别:代表的对象不同
this:代表本身调用者这个对象
super:代表父类对象的应用
前提情况下:
this:没有继承关系也能使用
super:只能在继承条件下才能使用
构造方法:
this();本类的构造!
super();父类的构造!

在这里插入图片描述



难以理解点:
当父类没有无参构造时 子类也就不能存在无参构造(重点)只有一种情况下出现例外!!!(除非在子类的无参构造中调用 父类的有参构造 那么子类的无参构造才可以存在)
如下图代码所示:

在这里插入图片描述

十四:方法的重写【(重点)多态的基础】

练习:



重点:重写都是方法的重写 与属性无关

在这里插入图片描述

重点:重写方法只能重写父类非静态的方法(没有static)
重写跟静态方法没有任何关系 只跟非静态方法有关
(静态方法是在类加载的时候就已经出现)




重点:理解:为什么运行结果都是A–>test();结果 因为子类重写了父类

在这里插入图片描述




重点:
重写总结:
重写:需要有继承关系 就是子类重写父类的方法!
1 方法名必须相同
2 参数列表必须相同
3 修饰符:范围只可以扩大 但不能缩小 例:public>protected>Default>private
4 抛出的异常:范围只可以缩小但不能扩大:例:classNotFoundException–>Exception
重写子类的方法名必须和父类一致 :但是方法体不同!



为什么要重写:
1 父类的功能 子类不一定需要 或者不一定满足!
快捷键:alt+insert :override

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值