课程链接:https://www.bilibili.com/video/BV1Rx411876f 开始时间:2020-10-05
三大特征: 封装、继承、多态 面向对象的分析:OOA 面向对象的设计:OOD 面向对象的编程:OOP
类:属性 :描述对象的状态信息 方法:描述对象的动作信息
对象变量又称为实例变量
实例化对象 new 类名()
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。 栈内存(局部变量):方法代码片段在执行的时候,会给该方法分配内存空间,在栈内存中压栈 堆内存:new的对象在堆内存中运行 引用保存了Java对象的内存地址 Java中没有指针,不能直接操作堆内存,只能通过“引用”去访问 读取数据: 引用.变量名 修改数据:引用.变量名=值
public class OOTest01 //类属于引用数据类型,不是基本数据类型 { public static void main(String[] args) { int i=10; Student s=new Student(); int stuNum=s.num; String stuName=s.name; int stuAge=s.age; boolean stuSex=s.sex; String stuAddr=s.address; System.out.println("学号="+stuNum); System.out.println("姓名="+stuName); System.out.println("年龄="+stuAge); System.out.println("住址="+stuAddr); System.out.println("性别="+stuSex); s.num=123; s.name="李三"; s.age=15; s.address="北京"; s.sex=true; System.out.println("学号="+s.num); System.out.println("姓名="+s.name); System.out.println("年龄="+s.age); System.out.println("住址="+s.address); System.out.println("性别="+s.sex); } }实例变量不能直接通过类名访问,需要靠类的实例才访问得到
几个文件在一个文件夹下才能运行
public class OOTest02 //类属于引用数据类型,不是基本数据类型 { public static void main(String[] args) { User u=new User(); System.out.println(u.no); System.out.println(u.name); System.out.println(u.addr); } } public class Address { String city;//城市 String street;//街道 String zipcode;//邮编 } public class User { int no;//编号 String name;//用户名 Address addr;//家庭住址,这里用的自己定义的类,引用数据类型 } public class OOTest02 //类属于引用数据类型,不是基本数据类型 { public static void main(String[] args) { User u=new User(); u.no=110; u.name="李武"; u.addr=new Address(); System.out.println(u.no); System.out.println(u.name); System.out.println(u.addr);//三个类中的属性都没有赋值 //所以赋值的是地址 } }可以多次加点 进一步访问
System.out.println(u.addr.street); public class OOTest04 //类属于引用数据类型,不是基本数据类型 { public static void main(String[] args) { //创建丈夫对象 //创建妻子对象 //结婚【能通过丈夫/妻子找到妻子/丈夫】 Husband huang=new Husband(); Wife baby= new Wife(); huang.name="小明"; baby.name="baby"; huang.w=baby; baby.h=huang; System.out.println(huang.w.name); } } public class OOTest05 //类属于引用数据类型,不是基本数据类型 { public static void main(String[] args) { Customer c=new Customer(); System.out.println(c.id);//输出0 //c=null; //System.out.println(c.id); //因为指向空了,所以对象被回收,找不到对象 } } public class Customer { int id; }类定义
public class Car { double TotalPrice; //总价 String Brand; //品牌 String Colour; //颜色 String Num; //号牌 } public class ProductTest { public static void main(String[] args) { //创建商品对象 Product Xiaomi=new Product(); Xiaomi.productNo=103; System.out.println("商品编号"+Xiaomi.productNo); } } public class Product { int productNo; //编号 double price; //单价 }show line number
设置字体
ctrl+D删除一行alt+\自动补全ctrl+1自动纠错ctrl+alt+down复制一行ctrl+shift+f自动整理代码格式(注意关掉搜狗的快捷键)ctrl+/注释和取消注释ctrl+/+shift多行注释和取消多行注释打不打钩,用来区分main方法 总体而言实现几个类的联动还是比较方便的
package test001; public class User { int age; } package test001; public class UserTest { public static void main(String[] args) { User user = new User(); user.age = 100; System.out.println(user.age); } }但如果改写上面这一句
private int age;就不能正常输出了 声明了私有变量的话,得使用set和get来修改和读取数据 set方法 public void set+属性名首字母大写(形参) { } get方法 public int getAge() { return age; }
setter 和 getter没有static 关键字,不能通过类名.方法名(实参)调用 只能用 引用.方法名(实参)
可以选择使用快捷方式 右键-source
package customer; public class Customer { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } package customer; public class CustomerTest { public static void main(String[] args) { Customer c=new Customer(); //私有屬性不能直接访问 //执行set和get时可以安全过滤 c.setAge(13); c.setId(23); c.setName("李四"); System.out.println(c.getAge()); System.out.println(c.getId()); System.out.println(c.getName()); } }结束时间:2020-10-09