首页 > 代码库 > Java(13) 抽象和封装

Java(13) 抽象和封装

一、简述从现实世界中抽象出类的步骤

  第一:找出分类(分析出类)
  第二:找出类的特征(分析类的相关属性)
  第三:找出类的行为(分析类的方法)

二、常量(经常出现的变量值)

2.1 语法:

  public static final 数据类型 常量名 = 常量值;
注意:1.final最终的,修饰的变量不能被修改
    2.变量名的所有字母都大写,多个单词用下划线(_)分割,
例如:public static final String SEX_MALE ="Q仔";
常量的访问式:类名.常量名

示例:

技术分享
 1 public class Example1 {
 2     String name = "无名氏";//昵称
 3     int health =100;//健康值
 4     int love = 0;//亲密度
 5     public static final String SEX_MALE= "雌";
 6     public static final String SEX_FEMALE = "雄";
 7     String sex  = SEX_MALE;//性别
 8     public void ji(){
 9         System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
10                 +",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
11     }
12 }
企鹅类
技术分享
 1 public class Text1 {
 2     public static void main(String[] args){
 3         Example4 qi = new Example4();
 4         System.out.println("第一个企鹅的性别是:"+qi.sex);
 5         qi = new Example4();
 6         qi.sex =qi.SEX_FEMALE;
 7         System.out.println("第二个企鹅的性别是:"+qi.sex);
 8         qi = new Example4();
 9         qi.sex =qi.SEX_MALE;
10         System.out.println("第三个企鹅的性别是:"+qi.sex);
11     }
12 }
测试类

运行结果为:技术分享

三.构造方法(特殊方法,用来创建对象,初始化值)

3.1 语法:

public 类名( 参数列表){
  //方法体
}
  a.使用
    类名 对象名 = new 构造方法名(参数);
    Dog d = new Dog();
  b.与一般方法的区别
    1,构造方法没有返回值类型;
    2,构造方法的方法名就是类名,一般方法可以任意取
         3,构造方法调用:new 构造方法名(参数);
    一般方法调用:对象名.方法名(参数);
  c.构造方法的作用
    1,创建方法对象
    2,初始化值(属性值);
注意:当你没有写构造函数时,java会提供默认的无参构造函数
例如:public Dog(){
   }

示例2:

技术分享
 1 public class Example2{
 2         String name = "无名氏";//昵称
 3         int health =100;//健康值
 4         int love = 0;//亲密度
 5         String sex  = "Q仔";//性别
 6         public Example6(){
 7             name = "楠楠";
 8             love =20;
 9             sex = "Q妹";
10             System.out.println("执行构造方法");
11         }
12         public void ji(){
13             System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
14                     +",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
15         }
16         public static void main(String[] args){
17             Example6 qi = null;
18             qi = new Example6();
19             qi.ji();
20         }
21 }
无参构造方法

运行结果为:技术分享

四、方法重载

   方法名一样,参数列表不一样
注意:重载与返回值了类型和访问修饰符无关

技术分享
 1 public class Example8 {
 2     String name = "无名氏";//昵称
 3     int health =100;//健康值
 4     int love = 0;//亲密度
 5     String sex  = "Q仔";//性别
 6     public Example8(){
 7         name = "楠楠";
 8         love =20;
 9         sex = "Q妹";
10         System.out.println("执行构造方法");
11     }
12     //两个参数的构造方法
13     public Example8(String name,String sex){
14         this.name = name;
15         this.sex = sex;
16     }
17     public Example8(String name,int health,int love,String sex){
18         this.name = name;
19         this.health= health;
20         this.love = love;
21         this.sex = sex;
22     }
23     public void ji(){
24         System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
25                 +",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
26     }
27     public static void main(String[] args){
28         Example8 qi = null;
29         qi = new Example8();
30         qi.ji();
31         qi = new Example8("丫丫","企鹅");
32         qi.ji();
33         qi = new Example8("妹妹",80,20,"Q仔");
34         qi.ji();
35     }
36 }
方法重载

 运行结果为:技术分享

六、封装

6.1 作用:隐藏类不实现细节;
6.2 步骤:

  1.采用了private修饰符的变量不能在类外部访问,而通过public修饰的set和get方法访问
  2.在set方法中编写相应存取控制语句可以避免出现不符合实际需求的赋值
    将属性均设为private权限,这样的属性只在类内可见,
    用public权限的ste方法和get方法实现对属性的存取。
    在set方法中对输入的属性值的范围进行判断,简单说,指定某一事物的值并要进行判断的时候用set
6.3 this关键词
     this:表示当前对象
     调用属性:this.属性名
    调用方法:this.方法名();
    this():表示调用构造函数。
注意:this(),必需写在构造函数的第一行。

 

Java(13) 抽象和封装