java笔记(1)

来源:互联网 发布:藿香清胃丸 知柏地黄丸 编辑:程序博客网 时间:2024/05/16 08:10

java面向对象

1、封装

封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。

封装即把一个对象的属性和行为的代码封装在一个类中。(属性指变量,行为指方法)

属性封装指把变量通过关键字private,protected和public实现封装

封装的简单例子:

先来个例子看看;
public class Man
{
//对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性
private String name;
private int age;
private Woman wife;
//对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
  // 方法封装
  public void setWife(Woman wife) {
  this.wife = wife;
  }
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public int getAge() {
  return age;
  }
  public void setAge(int age) {
  this.age = age;
  }
  }
  public class Woman {
  // 属性封装
  private String name;
  private int age;
  private Man husband;
  // 方法封装
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public int getAge() {
  return age;
  }
  public void setAge(int age) {
  this.age = age;
  }
  public Man getHusband() {
  return husband;
  }
  public void setHusband(Man husband) {
  this.husband = husband;
  }
  }
/**
* 仔细看就会发现,Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问,
*
* 接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,
*
* 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改
*
* 同时对一些对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法
*
* 外界是不能得到Man类的wife属性的
*
*/
上面那例子可能没有突出封装的好处,下面来个超简单的表达下:
public class Show
{
public static void show(String str)
{
System.out.println(str);
}
}
上面就是对 System.out.println();的封装。
调用的时候 :
public class Use
{
public static void main(String[] args)
{
Show.show("封装");
}
}
这样用的时候就不用使:System.out.println("封装");

封装的作用

编辑
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。



变量

1.局部变量

       在成员方法内部定义的变量,仅作用于成员方法内

2.成员变量

       在类的内部,成员方法外部定义的变量,作用于整个类

3.静态变量(由 static 修饰符 修饰)

       在类的内部,成员方法外部定义的变量,作用于整个类

4.最终成员变量(由 final 修饰符 修饰)

        一般在声明时要进行初始化,且不能改变

5.临时变量(由 transient 修饰符 修饰)

6.共享变量(由 volatile 修饰符 修饰)

        


继承

  当子类定义的成员方法名称与父类相同,子类会覆盖隐藏父类的方法,也就是说子类在调用此方法时,默认调用他自己定义的方法(成员变量同理)

   this和super关键字:this指的是所在类的当前对象,super指的是所继承的父类对象

   super.变量名;(用来访问父类被隐藏的成员变量)

   super.方法名;(用来调用父类中被重写的方法)

   super.变量名;(用来调用父类的构造函数)


接口

子接口必须实现父接口的所有方法

定义一个接口和抽象类一样:只能定义常量,不能定义变量;只能定义抽象方法,不能实现方法(既不能有方法体);所声明的方法不加abstract也会被视为抽象方法

0 0