1.面向对象
面向过程:我应该干什么 重在过程
面向对象: 找谁干什么 重在对象
例子:
挑选一个电脑(台式)
1.挑一个CPU
2.挑一个主板
3.挑一个显卡
4.挑一个显示器
面向对象的好处:
1.将复杂的事情简单化
2.从事务的执行者转化为指挥者
3.更贴近人的思维(懒人思维)
2.类和对象
Java中 最基本的单位 就是类
类:抽象事物的描述(模板)
对象:用类创建出来的就是对象(具体的事物)
创建一个类 : 关键词class 类名()
学生类测试
//类名 对象名=初值
Student stu=new Student();
//使用 对象名.属性名 进行赋值和取值
stu.name="it";
stu.age=22;
//调用成员方法 对象名.方法名()
stu.eat();
//哪个对象调用该方法 打印那个对象方法 属性
stu.sayHi();
//成员方法
public void eat() {
System.out.println("吃");
//介绍一下自己的方法
public void sayHi() {
System.out.println("姓名:"+name);
3.成员变量与局部变量的区别
1.书写位置
成员:类中 方法外
局部:方法中或方法上
2.内存中表现
成员:堆内存
局部:栈内存
3.声明周期
成员:随对象进入堆内存中创建 随对象销毁而销毁
局部:随方法的调用入栈 随方法结束而销毁
4.作用域
成员:整个类
局部:方法中
5.初始值
成员:默认初始值
局部:默认没有初值 不给初值编译报错
4.引用数据类型时传参
//要什么类型 就给什么类型
public static void fun2(Person p) {
p.name="李四";
p.age = 24 ;
}
public static void main(String[] args) {
int a=100;
fun1(a);
System.out.println(a);
Person p1=new Person();
p1.name="王五";
p1.age = 28 ;
fun2(p1);
p1.sayHi();
}
5.匿名对象
匿名对象:没有名字的对象
一般在方法传参数的时候使用
只调用一下方法(不赋值的情况下)
public static void setNameAndAge(Person p,String name,int age) {
p.name=name;
p.age=age;
p.sayHi();
}
public static void main(String[] args) {
//创建两个person对象
//将重复代码 抽成一个方法
Person p1=new Person();
p1.name ="cdd";
p1.age=16;
p1.sayHi();
Person p2=new Person();
setNameAndAge(p2, "cddd", 8);
//使用匿名对象 当方法的参数
//好处:较少代码量
setNameAndAge(new Person(), "cc", 20);
//匿名对象也是对象 可以赋值属性 调用成员方法
new Person().name="c";
new Person().age=30;
new Person().sayHi();
//只调用方法可以使用匿名对象
//测试方法时可能会使用
new Person().fun();
6.封装
写方法就是封装的一种
相当于隐藏代码的实现和属性
需要开放访问方式(方法) 获取 修改
好处:提高代码的复用性 提高代码的安全性
关键字(权限修饰符)
private
被private修饰的属性只能本类中访问
//java bean规范
//1.声明成员变量都要私有化
//2.给每一个成员变量提供set/get方法
//3.必须提供 无参的构造方法
private String phoneName;
private String color;
//对外开放访问方式
//获取方法
public String getPhoneName() {
return phoneName;
}
//修改(设置)方法
public void setPhoneName(String phonename) {
//关键字this 代表本类的对象
//this.成员变量 获取本类的成员变量
//this.成员变量="哈哈";赋值
//this.成员方法 调用本类的成员方法
//谁调用了这个方法 谁就是this
this.phoneName=phonename;
}
//规范
//获取get+成员变量名(首字母大写)
//修改set+成员变量名(首字母大写) 没有返回值
public String getColor() {
return color;
}
public void setColor(String color) {
this.color=color;
}
7.构造方法
构造方法:对 对象的成员变量进行初始化
写法:
1.没有返回值类型(连void都不写)
2.构造方法名 要与 类名 完全一致
public static void main(String[] args) {
//创建一个pen对象
//构造方法 是系统帮你调的
//只要你创建对象,系统会帮你调用构造方法
//构造方法执行一次
Pen p=new Pen();
p.sayHi();
//测试有参
//你传参数 系统就会找你有参的构造方法调用
Pen p1=new Pen("钢笔","绿色");
p1.sayHi();
类中的书写顺序
1.成员变量
2.无参构造方法
3.有参构造方法
4.成员方法
5.set/get方法