面向对象
面向对象思想特点:一种更符合思想 可以将复杂的东西简单化 从执行者变为指挥者
面向过程:(例)把大象装冰箱 第一步把冰箱门打开 第二步把大象装进去 第三步把冰箱门关上
面向对象:创建一个对象(让对象去做事)
例(做饭):买米 付钱 回家 淘米 做饭 出锅 吃饭 洗碗 从第一步到最后一步都是我在执行
:找饭店 点单 让老板去做(米+淘米+做饭)吃饭 给钱 从执行者变为指挥者
面向对象的3大特性:封装,继承,多态
类与对象
动物(类):鸡,鸭,猪,老虎,猴子
人(类):男人,女人,小孩,老人,人妖
描述现实生活中的人类:信息 姓名 性别 年龄 身高 体重 住址 能做什么:吃,喝,拉,撒,睡
用Java描述:属性(该事物的描述信息 名词) 行为(该事物能做什么 动词)
public class Student {
//创建成员属性
String name;//姓名
int age; //年龄
int stuNo; //学号
//创建成员方法
public void study(){
System.out.println("正在学习");
}
public void sport(){
System.out.println("正在运动");
}
}
图上学生类写完 运行需要 写测试类(main())
测试类文件名 应和学生类一致 Demo_Student
Java中最基础的单位是类:java中的类 用class描述
class(类)中:成员属性 事物的属性 姓名 年龄...
成员方法 事物的行为 吃饭 睡觉...
类:一组相关的属性和行为的集合
对象:该类事物的具体实现
如何使用对象:Student s=new Student();创建对象 对象名为s
格式:类名 对象名=new 类名();
对象名:要使用合法标识符 满足驼峰命名法
使用对象:对象名.变量名 (s.name=" 木舟";s.age=25;s.stuNo=1001;)
使用方法:对象名.方法名(s.study();)
垃圾回收机制:如果没有任何引用指向该对象 那么该对象就会变成垃圾 java中有完善的垃圾回收机制 会在不定时的对其进行回收 不需要手动设置null java有自动回收机制
成员变量和局部变量的区别
在类中的位置不同:成员变量(在类中 方法外),局部变量(在方法定义中或者方法声明上)
初始化不同:成员变量(可以不赋值,有默认初始化值),局部变量(必须定义赋值才可以使用)
在内存中位置不同:成员变量(堆),局部变量(栈)
生命周期不同
在方法中定义的变量 局部变量 只在方法内有效 形式参数属于局部变量 如果方法内有与成员变量同名的变量 那么就近原则取最近的
测试类中 给方法传类的参数
// Car c=new Car();//有名对象
// print(c);//方式1
// print(new Car());//方式2 //匿名对象 只适合对方法的1次调用
//多次调用会产生多个对象不如使用有名对象 调用完毕后就是垃圾 会被垃圾回收器回收
//好处节省代码
new Car().open();//匿名对象 直接调用Car类中的方法
//匿名对象可以调用属性 但是没有意义 因为调用后就变成了垃圾
//如果需要赋值必须用有名对象
}
public static void print(Car c){
c.colour=("灰色");
c.tyre=(4);
System.out.println(c.colour+"-------"+c.tyre);
c.open();
c.stop();
c.brake();
}
有名对象:
匿名对象:可以作为实际参数传递
public static void main(String[] args){
for(int i=1;i<=100;i++){
method(new Car());
}
}
public static void method(Car c){
c.tyre=4;
c.colour="白色";
c.run();
}
封装:是指隐藏对象的属性和实体细节 仅仅对外提供公共访问方式
好处:隐藏实现细节 提供公共访问方式 提高代码复用性 提高安全性
原则:将不需要对外提供的内容都隐藏起来
开发过程中一般都要把类私有化
单词 private get set
public class Person {
private String name;//封装名字
private int age;//封装年龄
//提供对外设置名字的方法
public void setName(String n){
name=n;
}
//提供对外访问年龄的方法
public String getName(){
return name;
}
//提供对外设置年龄的方法
public void setAge(int a){
if(a>0&&a<=120){
age=a;
}else{
System.out.println("请填写正确年龄");
}
}
//提供对外访问年龄的方法
public int getAge(){
return age;
}
public void show(){
System.out.println(name+"--"+age);
}
}
public class Demo_Person {
public static void main(String[] args) {
Person p=new Person();
p.setName("木舟");
p.setAge(25);
String n=p.getName();
int a=p.getAge();
System.out.println(n+"---"+a);
p.show();
}
}