• JAVA_基础面向对象:封装和隐藏


    面向对象:封装和隐藏

    封装性

    高内聚:类的内部数据操作细节自己完成,不允许外部干涉

    低耦合:仅对外暴露少量的方法用于使用

    隐藏对象内部的复杂性,只对外公开简单的接口。便于外界的调用,从而提高系统的扩展性、可维护性。通俗的说就是把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

    private 关键字:私有化。

    private int age;
    

    封装性的体现:将类的属性私有化(private),当我们通过对象的实例(instance)是调用不了被修饰的变量的。但我们可以提供公共(public)的方法来获取和设置此属性的值。

    封装性的体现,需要权限修饰符来配合

    1. Java规定的4种权限(从小到大排列)private、缺省、protectedpublic
    2. 4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类。

    注意类只能用public或缺省来修饰。

    public class show {}
    /* 或 */
    class show {}
    

    总结封装性:Java提供了4种权限修饰符来修改类及类的内部,体现类及类的内部结构在被调用时的可见性的大小。

    构造器

    构造器 | 构造方法 | constructor

    构造器的作用

    创建对象

    初始化对象的属性

    • 如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器

    • 定义构造器的格式:权限修饰符 类名(形参列表){ }

    public class PersonTest {
    	public static void main(String[] args) {
    //	创建类的对象: new + 构造器
    		Person p = new Person();
    		p.eat();
    		Person p1 = new Person("Tom");
    		p1.study();
    	}
    }
    class Person {
    	String name;
    	int age;
    //	构造器
    	public Person() {
    		System.out.println("Person().....");
    	}
    	public Person(String n) {
    		name = n;
    	}
    	public Person(String n, int a) {
    		name = n;
    		age = a;
    	}
    //  方法
    	public void eat() {
    		System.out.println("人吃饭");
    	}
    	public void study() {
    		System.out.println("人学习");
    	}
    }
    
    • 一个类中定义的多个构造器,彼此之间构成重载
    • 一旦我们定义了类的构造器,系统就不在提供默认的空参构造器

    JavaBean的用法

    javaBean是一种Java语言写成的可重用组件。

    所谓JavaBean,是指符合如下标准的Java类:

    • 类是公共的
    • 有一个无参的公共的构造器
    • 有属性和相对应的getset方法
    public class Customer {
    	private int id;
    	private String name;
    	
    	public Customer() {
    		
    	}
    	public void setId(int i) {
    		id = i;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setName(String n) {
    		name = n;
    	}
    	public String getName() {
    		return name;
    	}
    }
    

    this关键字的使用

    this可以用来修饰:属性、方法、构造器

    this修饰属性和方法:

    • this理解为:当前对象 或 当前正在创建的对象
    • 在类的方法当中,我们可以使用this.属性this.方法的方式,调用当前对象 或 当前正在创建的对象属性或方法。
    • 通常情况:下我们都选择省略this
    • 特殊情况下:如果方法形参和类的属性同名时,我们必须使用this来指明变量的属性,而非形参。
    class Person {
    	private String name;
    	private int age;
        // 构造器
    	public Person() {
    		this.eat();
    	public Person(String name) {
    		this.name = name;
    	public Person(int age) {
    		this.age = age;
    	public Person(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    	// 方法
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public int getAge() {
    		return age;
    	public void eat() {
    		System.out.println("人吃饭");
    		this.study();
    	}
    	public void study() {
    		System.out.println("人学习");
    	}
    }
    

    this调用构造器

    • 我们在类的构造器中,可以显式的使用this(形参列表)方法,调用本类中的其它构造器

    • 构造器不能通过this(形参列表)方式调用自己

    • 如果一个类中有n个构造器,则最多有n - 1构造器中使用this(形参列表)

    • 规定:this(形参列表)必须声明在当前的构造器的首行

    • 构造器内部,最多只能声明一个this(形参列表),用来调用其它的构造器

    class Person {
    	private String name;
    	private int age;
    	// 构造器
    	public Person() {
    		this.eat();
    	}
    	public Person(String name) {
    		this();
    		this.name = name;
    	}
    	public Person(int age) {
    		this();
    		this.age = age;
    	}
    	public Person(String name, int age) {
    		this(age);
    		this.name = name;
    //		this.age = age;
    	}
    }
    
  • 相关阅读:
    UILabel 设置字体间的距离 和 行与行间的距离
    IB_DESIGNABLE 和 IBInspectable 的使用
    干货博客
    GitHub克隆速度太慢解决方案
    实时(RTC)时钟,系统时钟和CPU时钟
    折腾了好久的vscode配置c/c++语言环境(Windows环境下)
    c语言中的malloc函数
    记录一下关于在工具类中更新UI使用RunOnUiThread犯的极其愚蠢的错误
    记录关于Android多线程的一个坑
    Android中限制输入框最大输入长度
  • 原文地址:https://www.cnblogs.com/BeautifulGirl230/p/14118847.html
Copyright © 2020-2023  润新知