一、面向对象
java是一门面向对象的一种编程语言,在java中,万事万物皆对象。
面向过程:面向过程就是分析出实现需求需要的步骤,通过一些方法一步一步去实现需求。
面向对象(行为化):把整个需求的按照特点,功能划分,将这些存在共性的部分封装成类(类实例化之后才是对象),让对象去解决问题。
在java中,面向对象有三大特征:
1.封装
2.继承
3.多态
4.抽象
成员变量—属性
·创建对象的过程,类的实例化的过程,对象又叫做类的一个实例
我们创建了一个Car类的对象car1,这个car1就是对象的名。其实这个car1就是个标识符。
·对象名的命名规则:小驼峰
·创建对象的语法:类名 对象名 = new 类名( );类名 对象名 = new 构造器(类名())
定义一个成员方法public:访问权限修饰符,后面讲
void:没有返回值
run():方法名,标识符
{}:方法体。这个方法要干什么
():传参数 在声明方法时,括号里的参数,形式参数,形参,可以当做局部变量使用 在调用方法时,真正传入方法的参数,实际参数,实参。 参数可以有多个,中间用逗号隔开 Java中的传参,需要明确数据类型
有返回值的方法
public
boolean:返回值类型,我这个方法经过一系列的运行过后,要得到一个具体的值,返回值,返回值的类型是boolean
返回值用return xxx; 类型要匹配
有返回值的方法在执行后会得到一个具体的值,这个值可以存下来
到底什么时候要有返回值,什么时候没有返回值?
开发中,大部分的方法都有返回值
return关键字
- return关键字终止方法继续执行
- 返回方法的返回值
问题:在void的方法中,能不能有return?
能
在一个方法中调用其他方法
public class Ch05 { String str; public void show(){ // 省略一部分要执行的代码... // 在一个方法中调用其他方法 // Ch05 c = new Ch05(); // c.info(); System.out.println(str); info(); } public void info(){ // 省略一部分要执行的代码... } }
标识符的命名规则:字母,数字,下划线,美元符号,数字不能开头 1、类名:大驼峰 2、属性名、方法名:小驼峰
划重点: 1、之前我们学习过8种基本数据类型 2、从今天开始,我们的数据类型就更多了。我们能够遇见的所有的类, 包括我们刚刚创建的Car是一种数据类型,一个美女也是一个数据类型。 ,所有的类都是数据类型,都是引用数据类型。 此刻起,我们才真正了解了class这个关键字,创建一个类,用来创建一个数据类型。 像car1,car2,car3....car100叫引用,它是指向内存中的一块区域。存放这些对象的 空间,我们叫做堆。 我们需要了解两块内存空间: 1、栈:我们存的是变量和基本数据类型(特点:先进后出)地址是一个十六进制的字符串 2、堆 引用数据类型的初始值为null
public class Ch03 { public static void main(String[] args) { // Car car; 声明了一个Car类型的属性car, // 赋值时,除了String外,其余的引用数据类型都需要new Car car = new Car(); // 只要看见了new,就不是null,它就有地址 System.out.println(car); } }
递归
成员方法 方法名不能重复 如果一个方法有static,要调用一个非static的方法,就只能创建对象,使用对象.方法的形式调用Ch01 c = new Ch01( ) ;
c.run( );
自己调自己-递归 递归的问题:StackOverflowError 栈溢出 内存溢出
方法的重载
方法的重载(Overload) 1.方法名相同 2.参数不同(参数的类型,参数的个数,参数的顺序) 3.发生在同一个类里 与返回值类型无关,与访问权限修饰符无关,与方法体无关 方法的重载的好处: 为了把功能相似相同的方法用同不定长参数 1.参数列表中,至多有一个不定长参数 2.不定长参数必须在最后位置·不定长参数的本质是数组
·java.lang包下的所有的类不需要显式的导入,剩下的都需要导包
public int sum(int [] arr){ result = 0;
练习:
需求:
* 写两个重载的方法
* 1.一个方法求两个数的最大值
* 2.另一个方法求三个数的最大值public class Ch03 { public int max(int num1,int num2) { return num1 > num2 ? num1:num2; } public int max(int num1,int num2,int num3){ int a = (num1 > num2 ? num1 : num2); return a > num3 ? a : num3; } public static void main(String[] args) { Ch03 c = new Ch03(); c.max(1,2,3); } }
访问权限修饰符
- public 共有的,公共的 权限最大,只要是public声明的方法,只要在同一个工程中,都能用。
·可以放在类、属性、方法、构造器上
- protected 受保护的:可以跨包,如果跨包必须是它的子类
·可以放在属性、方法、构造器上
- 默认的(啥也不写)default:只有当前包下可以访问(把包导进来也不行)
·可以放在类、属性、方法、构造器上
- private 私有的 权限最小,只有在当前类才能用
·可以放在属性、方法、构造器上
构造器
语法:访问权限修饰符 类名(参数列表){ }
特点(特性):
- Java在new对象的时候,先看对象所对应的类有没有构造器,有的话有什么样的构造器;如果没有构造器,则无法构建对象(创建对象)
- 每个类会有一个默认的无参的构造器
- 在对象被实例化时调用了构造器
- 我们创建对象实际上是通过构造器创建的
- 如果一个类中显示的声明了一个构造器,原来默认自带的无参构造器就失效(被覆盖)。如果有多个构造器,必须重载。
public class Ch06 { public static void main(String[] args) { // 创建对象的过程,实例化的过程,创建一个Dog类的实例 // 类名 对象名 = new 构造器; Dog dog = new Dog(""); } }
学习感受:
今天的内容还不是很理解,还需要看视频复习理解,今天讲的内容稍稍理解,但是自己去实现代码是写不出来的,这个过程还需要多加锻炼,多加思考,