面向对象
1.封装
封装的步骤:
1. 私有化要封装的属性
2. 根据需求提供对应的get或者是set方法
封装的好处:
1. 提高数据的安全性
2. 操作简单
3. 隐藏实现
封装一定会用的场景:如果是实体类的成员属性,我们在现实开发中全部封装起来
- 例子
class Member{
String name;
private String sex;
public void setSex(String sex) {
if("男".equals(sex)|| "女".equals(sex)) {
this.sex = sex;
}
}
public String getSex() {
return sex;
}
}
public class Demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Member m = new Member();
m.name = "a";
m.setSex("男");
System.out.println(m.getSex());
}
}
2.代码块
- 构造代码块:给对象进行统一的初始化工作
应用场景:如果创建任意对象的时候都需要调用某个方法为该对象进行初始化时,这时候就可以使用构造代码块
- 静态代码块:静态代码块是静态代码块所属的类被加载到内存的时候执行的
静态代码块的应用场景:以后主要用于准备一个项目的初始化工作
比如:从配置文件中读取数据库用户名与密码
3.继承的问题
- Java是单继承的
- 隐式继承:隐式继承的成员不能直接访问,要通过方法间接的进行访问。如下:t.setInfo(“aa”)不报错,表明this.name能够指向Worker的name成员
class Worker{
private String name;
public void setInfo(String name) {
this.name = name;
System.out.println("姓名:"+this.name);
}
}
class Teacher extends Worker{
}
public class Demo5 {
public static void main(String[] args) {
Teacher t = new Teacher();
t.setInfo("aa");
}
}
4.内部类
匿名对象:没有引用类型变量指向的对象就称作为匿名对象
匿名内部类:没有类名的类就称作为匿名内部类
匿名内部类的使用前提:必须存在继承或者实现关系
因为匿名内部类没有类名,所以创建匿名内部类对象的时候就必须要借助与它父类的名字或者它父接口的名字来创建
但是匿名内部类只不过是没有类名,其他的一概成员都是具备的
匿名内部类的应用场景:主要是作为参数传递使用
- 例子
interface Dao{
public void add();
}
class Outer{
public void print() {
new Dao(){ //这里不是创建接口的对象,是创建了Dao实现类的对象,但是这个类是一个匿名内部类而已,没有类名因此接用了父接口的名字而已
//大括号中就写匿名内部类的成员
@Override
public void add() {
// TODO Auto-generated method stub
System.out.println("添加学生。。");
}
}.add();
}
}
public class Demo7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer outer = new Outer();
outer.print();
}
}