栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础学习day10【谷】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础学习day10【谷】

Java基础学习day10【谷】 面向对象特征之一:封装和隐藏 一、问题的引入:

当我们创建一个类的对象以后,我们可以通过"对象,属性"的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。(比如:Set方法)
同时,我们需要避免用户再使用"对象,属性"的方式对属性进行赋值。则需要将属性声明为私有的(private)
————————>此时,针对于属性就体现了封装性。

二、封装性的体现

我们将类的属性xxx私有化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)

拓展:封装性的体现:①如上②不对外暴漏的私有方法③单例模式。。。。。。

三、封装性的体现,需要权限修饰符来配合。
  1. Java规定的4种权限(从小到大排列):private、缺省、protected、public

  2. 4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类

  3. 具体的,4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类

     		修饰类的话,只能使用:缺省、public
    

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

练习

1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:用setAge()设置人的合法年龄(O~130),用getAge()返回人的年龄在PersonTest类中实例化Person类的对象b,调用setAge()和getAge()方法,体会Java的封装性。

Person类

public class Person {
    private int age;
    public int getAge(){
        return age;
    }
    public void setAge(int a){
        if(a>0&&a<130){
            age=a;
        }else {
            age=-1;
        }

    }
}

PersonTest类

public class PersonTest {
    public static void main(String[] args) {
        Person person = new Person();
        person.setAge(40);
        if(person.getAge()>0){
            System.out.println(person.getAge());
        }else {
            System.out.println("年龄不符合要求!!!");
        }
    }
}
构造器

别称:构造方法、constructor

构造器的作用

创建对象

初始化对象信息

说明
  1. 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
  2. 定义构造器格式:权限修饰符 类名(形参列表){}
  3. 一个类中定义多个构造器,彼此构成重载
  4. 当一个类中定义了有参构造器,那么系统将不会在提供无参构造器
  5. 一个类必须含有至少一个构造器
练习

3.编写两个类,TriAngle和TriAngleTest,其中TriAngle:类中声明私有的底边长base和高height,同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。

TriAngle类

public class TriAngle {
    private int base;
    private int height;

    public int getBase() {
        return base;
    }

    public void setBase(int base) {
        this.base = base;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public TriAngle() {
    }

    public TriAngle(int b, int h) {
        base = b;
        height = h;
    }

    public int area(TriAngle t) {
        return t.getBase() * t.getHeight() / 2;
    }
}

TriAngleTest类

public class TriAngleTest {
    public static void main(String[] args) {
        TriAngle triAngle = new TriAngle(5, 6);
        System.out.println(triAngle.area(triAngle));
    }
}
总结:属性赋值的先后顺序
  1. 默认初始化

  2. 线性初始化

  3. 构造器赋值

  4. 通过“对象.方法”或“对象.属性”进行赋值

    1–2–3–4

JavaBean是一种Java语言写成可重用组件

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

》类是公共的

》有一个无参的公共的构造器

》有属性,且有对应的get set方法

this this关键字的使用:

this可以用来修饰:属性、方法、构造器
this修饰属性和方法:
this理解为:当前对象或当前正在创建的对象
2.1
在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。但是通常情况下,我们都选择省略"this."。特殊情祝下,如果方法的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。

2.2

在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对象属性或方法,但是通常情况下,我们都选择省略"this."。特殊情祝下,如果构造器的形参和类的属性同名时,我们必须显的使用"this.变量"的方式,表明此变量是属性,而非形参。

this调用构造器

@我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
②构造器中不能通过"this(形参列表)“方式调用自己
@如果一个类中有n个构造器,则最多有n-1构造器中使用了"this(形参列表)”
@规定:"this(形参列表)“必须声明在当前构造器的首行
⑤构造器内部,最多只能声明一个"this(形参列表)”,用来调用其他的构造器

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号