1.类和对象
类是模子,确定对象将会拥有的特征(属性)和行为(方法)
对象是类的实例表现
类是对象的类型
对象是特特定类型的数据
属性:对象具有的各种静态特征
方法:对象具有的各种动态行为
2.创建类
包名的推荐命名规范
1.英文字母小写
2.域名的倒序
类名:首字母大写
public class Cat {
//成员属性
String name;
int age;
double weight;
//成员方法
public void run(){
System.out.println("跑");
}
public void eat(){
System.out.println("吃");
}
}
3.实例化对象
public class CatTest {
public static void main(String[] args) {
//对象实例化
Cat cat = new Cat();
cat.run();
cat.eat();
cat.name="小强";
cat.run("小花");
}
}
4.类的单一职责原则
4.1为什么main方法要放在CatTest中?
面向对象设计,一个类只有一个功能,只干一件事
如果在一个类中承担的功能越多,它的交融和耦合性就越高,被复用的可能性就会降低,就跟我们现实生活中的走路玩手机,开车打电话一样,容易造成事故。
在程序设计中我们尽量将不同的职责放在不同的类中,在这个例子当中我们只是把毛的功能放在了Cat类中,测试相关的功能放在CatTest中,那这就是职责单一的表现
关于面向对象的设计原则不止单一职责原则,还有开闭原则等等。
4.2拆分之后的类是如何进行进行交互的呢?
java是有自己的搜索机制的,当主方法运行的时候,会先在它所在的类里面去查找相关的类是否存在,也就是在CatTest中找Cat类,如果找不到,就会向上去找它同一个包里的,如果能找到允许访问的Cat类,就会进一步找它里面允许访问的属性和方法
5.new关键字
实例化对象的过程可以分为两部分:
1.声明对象 Cat car
在内存的栈空间开辟了一块空间,取名cat,此时还没有初始化,为null
2.实例化对象 new Cat();
在内存的堆空间开辟了一块空间,完成对象相关信息的初始化
基本数据类型会在栈空间占一块内存
引用数据类型则会在栈和堆各占一块内存
new开辟新的对象空间,假设声明了a对象和b对象且实例化,那么他们指向的内存空间是不同的,互不影响。
6.构造方法
也称构造函数或构造器
1.构造方法与类名相同且没有返回值
2.只能在对象实例化的时候调用
3.当没有指定的构造方法时,系统会自定添加无参的构造方法
7.this关键字
指的是当前对象,谁调用了当前成员,谁就是this。