目录
一、面向过程与面向对象的区别
😀面向过程
是根据事件的发展经过来进行编程,捋清问题的思路,分析出步骤,然后调用函数一步一步解决.面向过程只适用于简单思路
😀面向对象
面向对象是以"对象"为中心的编程思想
二、面向对象的基础认知
1、介绍类与对象
类和对象的关系
😀类是抽象的概念,是对象的模板
😀对象是具体的事物,是类的具体实例
面向对象编程
😀面向对象编程是利用编程方式体现出现实中类与对象
😀从已有现实的类中定义程序中的类(Class)
😀从类(Class)创建(实例化)具体的对象(Object)
Java创建类的语法
public class 类名{
//类的内容
}
1、类名要有直白的意义,最好是英文。
2、首字母大写:Dog、Big Decimal。
3、不要数字开头,不要包含特殊字符。
创建类的实例对象
类名 对象名 = new 类名();
Dog duoduo = new Dog();
Dog lucky = new Dog();
new 关键字是创建实例对象最重要的标志。
2、IDEA创建类与对象
1、定义类名时,首字母要大写,之后的每个有意义的单词也要大写;
2、定义对象名是,首字母要小写,之后的每个有意义的单词也要大写;
public class Dog {
public static void main(String[] args) {
Dog duoduo = new Dog();
Dog Lucky=new Dog();
Dog petDog=new Dog();
}
}
3、成员变量
😀成员变量就是隶属于对象的变量
😀成员变量用于保存对象的静态特征
😀同类型的不同对象拥有相同的成员变量,但值彼此独立
成员变量的定义
public class Dog{
String name;
int age;
float weight;
}
成员变量的使用
public class Dog {
String name;
int age;
float weight;
public static void main(String[] args) {
Dog duoduo = new Dog();
duoduo.name = "多多";
duoduo.age = 6;
duoduo.weight = 13.5f;
Dog lucky = new Dog();
lucky.name = "Lucky";
lucky.age = 3;
lucky.weight = 10.2f;
//输出信息
System.out.println(duoduo.name+"今天"+duoduo.age+"岁了");
System.out.println(lucky.name+"体重"+lucky.weight+"千克");
}
}
4、方法的作用
定义成员方法的语法格式如下:
[权限修饰符][返回值类型]方法名([参数类型 参数名])[throws 异常类型]{
…//方法体
return 返回值;
方法是用于完成特定功能的整段代码。通过对一段可以实现特定功能的代码进行简单的包装,形成方法,让程序可以反复去调用同一个方法,来反复实现这个功能。
package d6z;
public class MethodSample01 {
public String isOddNumber(int num){
System.out.println("原始数据为:"+num);
if(num%2==0){
return "偶数";
}else{
return "奇数";
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/* int a=10;
if(a%2==0){
System.out.println(a+"是偶数 ");
}else {
System.out.println(a+"是奇数");
}
int b=5;
if(b%2==0){
System.out.println(b+"是偶数");
}else{
System.out.println(b+"是奇数");
}*/
//在mian使用方法,先创建对象才能使用
int a=10;
MethodSample01 methodSample01=new MethodSample01();
String r1=methodSample01.isOddNumber(a);
System.out.println(a+"是"+r1);
int b=5;
String r2=methodSample01.isOddNumber(b);
System.out.println(b+"是"+r2);
}
}
三、面向对象特性 之封装
1、包-Package
封装
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
把功能相似或相关的类组织在同一个包中
包也采用了树形目录的存储方式
通过包也可限定类的访问权限
😀包的命名规范:
包采用“逆域名法”进行命名 ,用“.”分割,单词全部小写。
标准格式:域名后缀.组织机构名.项目名[模块名].包的职能
😀包中类的引用:
1.跨包引用,在package包声明后加上import导入
2.同一包下的不同类,在互相引用时不必导入
2、访问修饰符
访问修饰符用于控制类、成员变量、方法的访问范围
封装
封装即隐藏功能的实现细节;
良好的封装代码更容易阅读和维护;
利用对象与方法是实现封装的直接途径。
对成员变量进行读写封装
😀setter 设置成员变量的内容 无返回值 有参数 格式:public void set成员变量名(新的数据参数)
😀getter 读取成员变量的内容 有返回值 无参数 格式:public 成员变量类型 get成员变量名() 首字母大写 返回值用 return 接收
😀this关键字代表当前对象的。
//MobileNumber
package com.imooc.object.Sample3;
public class MobileNumber {
private String owner;
private String areaCode;
private String mobileNumber;
//getter方法,用于读取成员变量的内容
//getter书写格式,public 成员变量类型 get 成员变量名(),PS:首字母大写
public String getOwner() {
//this关键字代表当前对象的...
return this.owner;
}
public String getAreaCode() {
//this关键字代表当前对象的...
return this.areaCode;
}
//setter方法,setter方法用于设置成员变量的内容
//setter书写格式:public void set成员变量名(新的数据参数)
public void setOwner(String owner) {
this.owner = owner;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
}
//MobileNumberTestor
public class MobileNumberTestor {
public static void main(String[] args) {
MobileNumber mobileNumber=new MobileNumber();
mobileNumber.setOwner("老奇");
String owner= mobileNumber.getOwner();
System.out.println(owner);
String areaCode=mobileNumber.getAreaCode();
System.out.println(areaCode);
}
}
3、面向对象特性之封装
现实中,肉类加工厂封装了加工的过程、苹果公司封装了芯片技术实现的过程等
概念:
封装就是隐藏功能的实现细节
对象和方法是实现封装的直接途径
良好的封装使代码更好的阅读和维护
好处一:把常见的排序算法都封装在一个类中,需要哪个就调用哪个。
好处二:使用者维护使用代码,服务提供者维护服务代码,两者互不影响。
4、对成员变量进行读写封装
//MobileNumber
package com.imooc.object.Sample3;
public class MobileNumber {
private String owner;
private String areaCode;
private String mobileNumber;
//getter方法,用于读取成员变量的内容
//getter书写格式,public 成员变量类型 get 成员变量名(),PS:首字母大写
public String getOwner() {
//this关键字代表当前对象的...
return this.owner;
}
public String getAreaCode() {
//this关键字代表当前对象的...
return this.areaCode;
}
//setter方法,setter方法用于设置成员变量的内容
//setter书写格式:public void set成员变量名(新的数据参数)
public void setOwner(String owner) {
this.owner = owner;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
}
//MobileNumberTestor
public class MobileNumberTestor {
public static void main(String[] args) {
MobileNumber mobileNumber=new MobileNumber();
mobileNumber.setOwner("老奇");
String owner= mobileNumber.getOwner();
System.out.println(owner);
String areaCode=mobileNumber.getAreaCode();
System.out.println(areaCode);
}
}
setter 设置成员变量的内容 无返回值 有参数 格式:public void set成员变量名(新的数据参数)
getter 读取成员变量的内容 有返回值 无参数 格式:public 成员变量类型 get成员变量名() 首字母大写 返回值用 return 接收
this关键字代表当前对象的。。。
四、面向对象特性之继承和多态
1、面向对象特性之继承
private 私有的 private private private private 只能在当前类中使用
public 公共的 public public public public public 不管什么地方都可以用
default 默认的 default defaullt default default default 可以在当前包的其他类中使用
protected 保护 protected protected protected protected 用在子类继承中和当前包的其他类中
类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。
extends只能继承 protected/public修饰的成员变量和方法,不能继承private修饰的成员变量和方法
package com.imooc.objectproject.sample1;
public class Mark1 {
protected String title;
protected String color;
protected String movie;
public void description(){
System.out.println("型号:"+title);
System.out.println("颜色:"+color);
System.out.println("首次出现电影:"+movie);
}
private void fire(){
System.out.println("利用手臂燃料泵射出火焰");
}
public static void main(String[] args) {
Mark1 mark1=new Mark1();
mark1.color="银灰色";
mark1.movie="钢铁侠1";
mark1.title="马克1型";
mark1.description();
mark1.fire();
}
}
2、面向对象特性之多态
上面介绍了继承,了解了父类和子类,其实将父类对象应用于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。
多态:
同一个行为具有多个不同的表现形式或形态的能力,根据输入的内容不同,去产生不同的接口实现
实现多态的关键是接口
接口:
是一个抽象的类型,只提供方法的定义
实现类:
是一个借口的具体实现,要实现每一个接口方法的功能
一个接口可以拥有多个实现类
3、ArrayList列表类的使用
ArrayList是Java内置的数据集合,用于存储多个数据
ArrayList是数组替代品,提供了更多的数据操作方法
ArrayList几乎是每一个项目中必用的类
移除最后一本书
1、向列表添加数据
对象名.add();
对象名.add(索引位置,数据)// 像当前数组尾部添加数据
2、泛型:<>
List <数据类型> 对象名 = new ArrayList<数据类型>();
3、得到指定位置数据
对象名.get(索引位置);
4、获得列表的数值总数
对象名.size();
5、移除数据
对象名.remove(索引位置);
6、移除最后一项数据
对象名.remove(对象名.size()-1);
7、遍历列表所有数据
For( 数据类型 变量名 :列表名){
//循环体
}
package com.imooc.object.Sample6;
import java.util.ArrayList;
import java.util.List;
public class ArrayListSample {
public static void main(String[] args) {
//泛型<类型>,用于规范列表中的数据
List<String> bookList=new ArrayList<String>();//创建ArrayList对象
bookList.add("红楼梦");//向列表末端追加数据
bookList.add("西游记");
bookList.add("水浒传");
bookList.add("三国志");
bookList.add("index:0,element“镜花缘");
System.out.println(bookList);
String bookName=bookList.get(2);//得到指定索引位置(从0开始)
System.out.println(bookName);
int size=bookList.size();//得到列表总数
System.out.println(size);
bookList.remove(2);
bookList.remove(bookList.size()-1);
System.out.println(bookList);
for (String book:bookList){
System.out.println("《"+book+"》");
}
}
}
ArrayList 是数组 Array 的替代品,提供了更多的数据操作方法
使用add(0, xxx) 就可以在List的头部添加元素
ArrayList 不强制要求存放在里面的数据都是同一类型的,但是最好保持同一类型
使用List<String>bookList = new ArrayList<String>(); 按照这样的格式写,对List里面的类型进行强制要求
<>里面表示的是泛型
bookList.get(2); //传入对应的索引,就可以用get
bookList.size(); //元素的数量
bookList.remove(2);
THE END!!!