什么叫面向对象?
以更接近于人的思维方式来开发的语言,作用是将一类物体提成一个类别
面向对象:以更接近于人的正常思维的方式开
主语 谓语 宾语
who 做 什么
* 将一类物体提成一个类别
* 例如: 宠物
* 将这类物体的属性及行为进行归类
* 属性:
* 名称
* 颜色:
* 性别
* 品种
* 行为:
* 吃
* 跑
* 玩
* 将归类后的文件称为class类
* 类 与 对象
* 类:将一类物体进行整体归纳成一类,编写成class
* 对象:使用该类创建的实体,称为对象
* 1、编写描述类class
* 2、获取实体 --- 对象
Pet dog = new Pet();//创建一个Pet的实体,赋值给dog
//通过实例访问实体的属性:实体.属性名
dog.name = "奥斯卡";
dog.type = "泰迪";
dog.color = "棕色";
//通过实例访问对应实体的行为 : 实体.方法名(参数)
dog.eat("蛋糕");
dog.play("飞盘");
* 好处:如果类是别人提供的,只需知道有哪些行为,哪些属性,就能很好的使用
* Scanner
* Random
* Arrays
//将学生进行归类,制定学生的属性(至少三个),学生的行为(至少3条)
}
* 需要一个功能:输出金毛吃东西
public static void petEat(String who,String food) {
System.out.println(who+"狼吞虎咽的吃"+food);
}
}
/**
* 传入两个参数,返回数值较大的参数
* 通用性差
* 方法重载 :
* 规定:
* 在同一个类中,允许创建多个方法名称相同,参数列表不同的方法
* 调用方法时,编译器会自动根据传入的参数来自行匹配对应的方法
package javase.oop.day01;
public class Util {
public int compare(int a,int b) {
return a > b ? a : b;
}
public byte compare(byte a,byte b) {
return a > b ? a : b;
}
public float compare(float a,float b) {
return a > b ? a : b;
}
public double compare(double a,double b) {
return a > b ? a : b;
}
}
面向对象的this
指向调用该方法的对象,用于区分命名
this关键字的作用
什么是类:将一类事物归为一个类别,指定事务的属性(成员变量)及行为(方法)
什么是对象:通过class模板获取的实例称为对象
new 类别名();
什么是方法重载:在同一个类中,允许创建多个方法名称相同但参数列表不同的(对应位置的数据类型不同 ,参数个数不同)的方法,调用时系统根据传入的参数自动匹配对应的方法为了解决方法通用性差的问题
什么是方法重写:发生在父子类之间,由于父类的方法对于子类来说不再适用,子类对父类的方法进行重写编写保持方法名称相同,参数列表相同,返回类型相同,仅改变其方法体
什么是继承:允许一个类使用extends关键字继承另一个类,得到该类的所有成员
被继承的类 :父类
实现继承的类:子类
子类拥有父类的所有成员(包括私有)
在Java中,一个类只能有一个直接父类 --- Java仅支持单继承
一个子类只能有一个直接父类,作为父类可以拥有多个子类
作用:
1、提高代码的复用性
2、多扩展,少更改
3、便于维护
什么是构造方法:与类同名且没有返回类型,用于初始化对象的方法
public 类名(){}
构造方法仅能在创建对象的使用
创建对象:new 构造方法();
构造方法支持重载
this
定义:当前对象的引用
1、当成员变量名与局部变量名相同时,区分成员变量及局部变量
2、在构造方法中首行调用其他的构造方法
3、当前对象的引用
super
定义:父类对象的引用
1、super.属性引用父类的属性
2、super.方法()引用父类的方法
3、父类构造方法的引用super(参数)
权限
公共的:在同一个项目中都能访问
受保护的:同一个包下及子类中能被访问
缺省的: 仅在同一个包下能被访问
私有的:仅能在当前类中被访问
封装的定义:属性私有化,行为公开化
setting:
void set属性名(参数)
getting:
数据类型 get属性名(){
return 属性名;
}
static
静态的
修饰符:能修饰变量,方法,类
1、被static修饰的变量,称为静态变量,单独存储在方法区
- 优先于对象加载
- 该类的所有实例共享其变量
- 静态属性可以使用类名.属性名直接访问
作用:所有实例共享其值,只需要加载一次所有的实例都能使用
音视频资源,图片都会采用静态加载
缺点:静态变量在此类加载时会被分配空间,直到程序结束时空间才会被回收
2、被static修饰的方法称为静态方法
静态方法能直接使用类名.方法名直接使用 ---- 一般工具类中的功能块都会写成静态方法
Math.random();
ImageIO.read()
3、被static修饰的类
4、static块
static {
/*
* 静态块
* 优先于其他方法执行,仅在加载此类事使用一次
* 一般用于驱动加载,资源链接,静态属性的初始化
* 静态块优先于main执行
*/
}
final
最终的
可以修饰变量,方法,类
final 修饰变量 : 最终的变量,仅能赋值一次
修饰的是成员变量必须初始化
修饰的是局部变量需要在使用前赋值一次
final修饰方法 : 最终的方法,禁止重写
final修饰的类 : 最终的类,禁止扩展,不允许继承
String