Java 的小白学习笔记十一(面向对象-封装和接口)
封装
封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
Java封装看做是一个保护屏障,放置一个类中的代码和数据被外部类定义的代码随机访问。
优点
1. 良好的封装能减少耦合
2. 类内部结构可以自由修改
3. 可以对成员变量更精确的控制
4. 隐藏信息,实现细节
实现封装
1. 修改属性的可见性来限制对属性的访问
public class Person{
// public String name;
private String name; //改为私有属性,外部不能直接访问
}
2. 对要控制的额值提供对外的公共方法访问,也就是创建一对取值赋值的方法(getter和setter),用于对私有属性的访问
public class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;}
}
接口
接口是一个抽象类型,是抽象方法的集合,通常用interface来声明,类通过继承接口的方式,来继承接口的抽象方法。
接口的编写方式跟类很相似,但不是同一概念。接口包含要实现的方法,而类描述对象的属性和方法。
除非实现接口的类是抽象类,否则要定义接口中所有的方法。
接口与类的区别
接口不能实例化对象
接口没有构造方法
接口中所有方法必须是抽象方法
接口不能包含除了static和final外的成员变量
接口不是要被类继承,而是要被类实现
接口支持多继承
声明语法格式
【可见度】interface 接口名称 【extends 其他类名】{
//声明变量
//抽象方法
}
接口特性
声明接口不用使用abstract关键字
接口中的方法不用使用abstract关键字,且都是共有的。
interface Animal{
public void eat();
}
//接口可以继承接口
interface Dog extends Animal{
public void bark();
}
interface Fish{
public void breath();
}
public class A implements Dog,Fish{
public void eat(){};
public void bark(){};
public void breath(){};
}
标记接口
没有任何方法的接口被称为标记接口,它不包含任何方法和属性,仅仅标明它的类属于一个特定的类型,供其他代码来测试允许做一些事情
标记接口目的
1. 建立一个公共的父接口
2. 向一个类添加数据类型
例
public interface EventListener{}