第六章 面向对象
介绍类与对象
类的特征和行为
类是抽象的概念,是对象的模板
对象是具体的事物,是类的具体实例化
面向对象编程
- 面向对象编程是利用编程方式体现出现实中类与对象
- 从已有现实的类中定义程序中的类
- 从类创建具体的对象
创建类的语法:
public class 类名{
//类的内容
}
创建类的实例对象:
类名 对象名=new类名();
成员变量
成员变量就是隶属于对象的变量
成员变量用于保存对象的静态特征
同类型的不同对象 拥有相同的成员变量,但彼此独立
案例如下:
public class Dog {
String name;
int age;
float weight;
public static void main(String[] args) {
Dog duoduo=new Dog();
duoduo.name="多多";
duoduo.age=6;
duoduo.weight=13.5f;
Dog lucky=new Dog();
lucky.name="lucky";
lucky.age=3;
lucky.weight=10.2f;
System.out.println(duoduo.name+"今天"+duoduo .age+"岁了");
System.out.println(lucky.name+"体重"+lucky.weight+"千克");
}
}
运行结果:
方法的作用
方法是用于完整特定功能的整段代码
案例如下:
public class MethodSample {
public String isOddNumber(int num) {
if(num%2==0) {
return"偶数";
}else {
return"奇数";
}
}
public static void main(String[] args) {
int a=10;
MethodSample methodSample=new MethodSample();
String r1=methodSample.isOddNumber(a);
System.out.println(a+"是"+r1);
int b=5;
String r2=methodSample.isOddNumber(b);
System.out.println(b+"是"+r2);
}
}
运行结果:
包-Package
- 把功能相似或相关的类组织在同一个包中
- 包也采用了树形目录的存储方式
- 通过也可限定类的访问权限
包的命名规范
包采用“逆域名法”进行命名,“.”分割,单词全部小写
标准格式:域名后缀.组织机构名.项目名.[.模块名].包的职能
访问修饰符
![](https://i-blog.csdnimg.cn/blog_migrate/46416901c0a56e34b8d65a1362678915.png)
面向对象特征之封装
- 封装即隐藏功能的实现细节
- 利用对象与方法是实现封装的直接途径
- 良好的封装让代码更容易阅读与维护
对成员变量进行读写封装
getter方法用于读取成员变量的内容
书写格式:public 成员变量 get成员变量名()
setter方法用于设置成员变量的内容
书写格式:public void set成员变量(新的数据参数)
//第一个类
public class MobileNumber {
private String owner;//所有者
private String areaCode="86";//国家区号
private long mobileNumber;//手机号
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner=owner;
}
}
//第二个类
public class MobileNumberTest {
public static void main(String[] args) {
MobileNumber mobileNumber=new MobileNumber();
mobileNumber.setOwner("老王");
String owner=mobileNumber.getOwner();
System.out.println(owner);
}
}
运行结果:
面向对象特性之继承
extends关键字用于类的继承
子类会继承父类的成员变量与方法
//第一个类
public class Mark1 {
protected String title;
protected String color;
protected String movie;
public void description() {
System.out.println("型号"+title);
System.out.println("颜色"+color);
System.out.println("首次出现电影"+movie);
}
private void fire() {
System.out.println("利用手臂燃料泵射出火焰");
}
public static void main(String[] args) {
Mark1 mark1=new Mark1();
mark1.color="银灰色";
mark1.movie="钢铁侠1";
mark1.title="马克1型";
mark1.description();
mark1.fire();
}
}
//第二个类
public class Hulk extends Mark1 {
public static void main(String args) {
Hulk hulk=new Hulk();
hulk.title="反浩克装甲";
hulk.color="红色";
hulk.movie="复仇者联盟";
hulk.description();
}
}
运行结果如下:
面向对象特性之多态
多态是同一个行为具有多个不同表现形式或形态的能力
实现多态的关键是接口
接口是一个抽象的类型,只提供的定义
实现类是一个接口的具体实现,要实现每一个接口方法的功能
ArrayList类
- ArrayList是Java内置的数据集合,用于存储多个数据
- ArrayList是数组替代品,提供了更多的数据操作方法
- ArrayList几乎是每个项目中必用的类