JAVA基础7-构造器

封装与隐藏

高内聚低耦合

  1. 高内聚:类的内部操作细节自己完成,不允许外部干扰
  2. 低耦合:仅对外暴露少量方法用于使用

封装体现

  1. 在类中,我们通过对象.属性对属性进行操作,但在现实情况中需要对操作进行限制
  2. 通过对用户设置进行判断或设置私有变量
  3. 我们将类的属性私有化,通过set方法进行设置,通过get方法获取
  4. 示例:
public class Test1 {
    
    
    public static void main(String[] args) {
    
    
       Person p1=new Person();
       p1.name="jack";
       p1.setAge(20);
       p1.show();
         System.out.println(p1.getAge());//20
       Person p2=new Person();
       p2.name="rose";
       p2.setAge(-20);
       p2.show();
       //name=roseage=0china
    }


}
class Person{
    
    
    String name;
    int age;
    private String nationality="china";//添加私有权限,外部无法更改
    //对设置年龄进行设置必须大于零,不然默认为0
    public void setAge(int num){
    
    
        if(num >= 0){
    
    
            age=num;
        }else {
    
    
            age=0;
        }
    }
    //获取属性
    public int getAge(){
    
    
        return age;
    }
    public void show(){
    
    
        System.out.println("name=" + name +" "+"age"+ age + " " +nationality);
    }

}

  1. 不对外暴露私有方法
  2. 单例模式

构造器(constructor)

构造作用

  1. 创建对象 new+构造器
  2. 初始化对象信息
  3. 如果没有显示定义类的构造器的话,则系统默认提供一个空参的构造器
  4. 默认构造器权限与类权限一致
  5. 一个类中如果有多个构造器,那么构造器之间为重载
  6. 定义构造器的格式:权限修饰符 类(形参列表){}
public class Test2 {
    
    
    public static void main(String[] args) {
    
    
        Person2 p=new Person2();
        //constructor
    }
}
class Person2{
    
    
    String name;
    public Person2(){
    
    
        System.out.println("constructor");
    }
}

JavaBean

  1. JavaBean是一种JAVA语言写成的可重用组件
  2. 特点:
    • 类是公共的
    • 有一个无参的公共构造器
    • 有属性,且有get,set方法
  3. 用户可以使用JavaBean将功能,处理,值,数据库访问和其他任何可以用JAVA代码创建的对象进行打包,其他开发者可以通过JSP页面,JavaBean,apple程序来访问,也就是说JavaBean提供了复制和黏贴功能

this关键字

  1. 在方法内部使用,即这个方法所属对象引用
  2. 在构造器内部使用,表示构造器正在初始化对象
  3. this在表示当前对象时,可以调用类的属性,方法,构造器
  4. 也就是在方法内部需要调用该方法的对象时,用this
  5. 通常this可以省略,但如果出现类和方法形参重名就需要加上
  6. 示例:
public class Test2 {
    
    
    public static void main(String[] args) {
    
    

        Person3 p2=new Person3();
        p2.setName("jack");
        System.out.println(p2.getName());
        //jack
        p2.eat();
        //做饭 吃饭
    }
}
class Person3{
    
    
    String name;
    public void setName(String name){
    
    
        this.name=name;//这样可以解决name=name指代不明情况
    }
    public String getName(){
    
    
        return this.name;
    }
    public void eat(){
    
    
        this.cook();//这里在方法里面调用类的方法
        System.out.println("吃饭");
    }
    public void cook(){
    
    
        System.out.println("做饭");
    }
}
  1. this调用构造器
    • 在类的构造器中,可以显示使用this(形参列表),调用本类指定的其他构造器
    • 调用应注意在一条调用链上同一个构造器只能出现一次
    • 构造器调用时只能出现在首行,并且只能声明一个调用其他构造器
    • 示例:
public class Test2 {
    
    
    public static void main(String[] args) {
    
    
		  //初始化同时向构造器中传参
          Person4 p4=new Person4("jack",22);
          p4.show();
          //name=jackage22
    }
}
class Person4{
    
    
    private String name;
    private int age;
    public Person4(String name){
    
    
        this.name=name;//赋值name
    }
    public Person4(String name,int age){
    
    
        this(name);//通过this关键字调用构造器
        this.age=age;//赋值age
    }
    public void show(){
    
    
        System.out.println("name=" + this.name + "age" + this.age);
    }
}

package(包)

  1. 为了更好的实现项目中类的管理,提供包的概念
  2. 使用package声明类或接口所属的包,声明在源文件首行
  3. 包属于标识符,遵循标识符命名规则
  4. 在包中每.一次表示一层文件目录

import(导入)

  1. 在源文件中显式使用import导入指定包下的接口和类
  2. 声明在包和类之间可以使用xxx.*表示导入包下所有结构
  3. java.long包下定义的或本包定义的可以省略import结构
  4. 如果使用同名类,就在new时用全类名方式
  5. import static可以导入指定类或接口中的静态结构

猜你喜欢

转载自blog.csdn.net/weixin_64925940/article/details/124539488