3.面向对象
3.1 封装
3.1.1 new关键字
-
实例化对象的过程可以分为两部分
-
声明对象 Cat one
-
实例化对象 new Cat();
-
声明对象是再栈里面 实例化对象是在堆里面
cat类
public class Cat { //成员属性 昵称,年龄,体重,品种 String name; // 昵称 int month; //年龄 int类型默认值0 double weight; //体重 double类型默认值0.0 String species; //品种 //跑动的方法 public void run(){ System.out.println("小猫快跑"); } public void run(String name){ System.out.println(name+"快跑"); } //吃东西的方法 public void eat(){ System.out.println("小猫吃鱼"); } }
实现类
public class CatTest { public static void main(String[] args) { // 对象实例化 Cat one = new Cat(); //测试 one.eat(); one.run(); one.name="花花"; one.month=2; one.weight=1000; one.species="英国短毛猫"; System.out.println("昵称:"+one.name); System.out.println("年龄:"+one.month); System.out.println("体重:"+one.weight); System.out.println("品种:"+one.species); one.run(one.name); } }
当再次创建一个对象two操作如下
cat two=one;
时 one和tow 这两个对象在栈中用的是同一个地址值去堆内存中进行查找
当one修改了属性tow的属性也随之改变;
3.1.2 类和对象
-
类
-
抽象的概念
-
模板
-
-
对象
-
一个看得到,摸得着的具体实体
-
对象的属性和方法
-
属性:对象具有的各种静态特征 ——对象有什么
-
方法:对象具有的各种动态特征——对象做什么
类和对象的关系
-
类是抽象的概念,仅仅是模板
-
对象是一个你能看得到,摸得着的具体实体
-
类是对象的类型
-
对象是特定类型的数据
-
具体开发过程中,先定义类再实例化对象
3.1.3 单一职责原则
单一职责原则
-
单一职责原则,也称为单一功能原则
-
英文Single Responsibility Principle 缩写SRP
-
是面向对象设计中的一个重要原则
-
一个类,应该有且只有一个引起变化的原因
-
在程序设计中,尽量把不同的职责,放在不同的职责中,即把 不同的变化原因,封装到不同的类中.
3.1.4 构造方法
1,构造方法与类同名且没有返回值
2,构造方法的语句格式
3,只能在对象实例化的时候调用
4,当没有指定构造方法时,系统会自动添加无参的构造方法
5,当有指定构造方法,无论是有参,无参的构造方法,都不会自动添加无参的构造方法
6,一个类中可以有多个构造方法
3.1.5 this关键字
-
this:当前对象的默认引用
-
this的使用
-
调用成员变量,解决成员属性和局部变量同名冲突
-
3.1.6 java封装
封装
-
将类的某些信息隐藏在类内部,不允许外部程序直接访问
-
通过该类提供的方法来实现对隐藏信息的操作和访问
-
隐藏对象的信息
-
留出访问的接口
特点:
1,只能通过规定的方法访问数据
2,隐藏类的实例细节,方便修改和实现
private私有的只有当前类能够调用被private修饰的变量其他类调取不到
3.1.7 static关键字
1,static+属性——静态属性
2,static+方法——静态方法
3,static+类——不存在
4,static+方法内局部变量——不存在
静态成员随类加载产生,直至类销毁才回收
注意!
1,可以直接调用同类中的静态成员
2,不可以直接调用同类中的非静态成员
3,可以通过实例化对象后,对象调用的方式完成非静态成员调用
4,静态方法中不能使用this关键字
3.1.8 包
作用:
1,管理java文件
2,解决同名文件冲突
3.4.1 定义包
语法:
package 包名;
例:package com.imooc.animal;
注意:
1,必须放在java源文件中的第一行
2,一个java源文件中只能有一个package语句
3,包名全部英文小写
4,命名方式:域名倒叙+模块+功能
3.4.2 导入包
语法:
import 包名.类名;
例:
导入包中全部类:
import com.imooc.*;
导入包中指定类:
import com.imooc.animal.Cat;
常用系统包
java.lang 包含java语言基础的类
java.util 包含java语言中各种工具类
java.io 包含输入,输出相关功能的类
3.1.9 代码块
1,通过{}可以形成代码块
2,方法内的代码块称为:普通代码块
3,类内的代码块称为:构造代码块
4,构造代码块前+static:静态代码块
代码块执行顺序
1,无论实例产生多少对象,静态代码块只执行一次
2,构造代码块随实例话过程调用
3,普通代码块随方法调用执行