一、面向对象:
/*
1.面向对象可分为三个阶段:
OOA:面向对象的分析
OOD:面向对象的设计
OOP:面向对象的编程
2.类的定义:
Student是一个类,是一种引用类型
概念上的一个定义,现实世界中不存在
变量前面没有static的修饰,叫做成员变量
*/
public class Student { //属性: //学号 int id;//成员变量;实例变量,非静态变量,成员变量如果没有手动赋值,系统则默认赋值 //id是对象级别的,必须先有对象才能访问,不能使用类直接访问 //姓名 String name; //性别: boolean sex; //年龄 int age; //住址 String addr; //方法 }
3.对象如何创建及访问
public class ClassTest01 { public static void main(String[] args){ //创建对象 //stu1是一个局部变量,这个局部变量是Student类型,也就是一个引用类型 //stu1称作:引用,指向内存中的一个地方引用中保存了对象在堆中的内存地址 //通过“引用”去间接访问堆中的对象 Student stu1=new Student(); //new的意思是在stack中开辟一个空间,这个空间是Student类型 //java中所有的new出来的数据统一存储在堆区中,程序员无法对堆区数据直接访问,只能通过内存地址间接访问 //一个类可以创建多个对象 Student stu2=new Student(); //使用对象 //访问成员变量,必须使用“引用.” //name是成员变量,对象相关,必须先有对象才能访问,必须使用“引用.” //System.out.println(Student.name);//error //读取 System.out.println(stu1.id);//0 System.out.println(stu1.sex);//false System.out.println(stu1.addr);//null System.out.println(stu1.age);//0 System.out.println(stu1.name);//null /* byte,short,int,long 0 float,double 0.0 boolean false char u0000 引用数据类型 null */ //赋值 stu1.addr="北京海淀区"; stu1.age=12; stu1.id=1; stu1.name="chu"; stu1.sex=true; // System.out.println(stu1.id); System.out.println("sut1.sex="+(stu1.sex?"男":"女"));//三目运算 System.out.println(stu1.addr); System.out.println(stu1.age); System.out.println(stu1.name); } }
4.面向对象的封装性
//面向对象的封装性
//类=属性+方法
//属性来源于状态,方法来源于动作
创建Custom类
//定义一个顾客类型
/*
1.属性私有化
2.对外提供公开的setter和getter
3.setAge和getAge方法的方法名遵循规范
*/
public class Custom { //属性 //成员变量,非静态变量,实例变量 //private修饰的数据只能在本类中访问 // private int age; int age; //对外提供两个公开的方法 //set public void setAge(int _age){ //安全性校验 if(_age<0 || _age>100){ System.out.println("年龄不合法"); return; } age=_age; } //get public int getAge(){ //不带static成员方法,实例方法,非静态方法 //成员方法必须使用“引用.”的方式访问 return age; } }
访问:
public class ClassTest02 { public static void main(String[] args){ //1.创建Custom类型对象 Custom cus=new Custom(); /* //读取 System.out.println(cus.age); //3.赋值 cus.age=1; //4.读取 System.out.println(cus.age); */ //赋值 cus.setAge(-10); //读取 System.out.println(cus.getAge()); } }